rest icon indicating copy to clipboard operation
rest copied to clipboard

FormData validation not working

Open dmlambea opened this issue 6 months ago • 1 comments

Describe the bug Schema validation tags (like "required") are not being taken into account for "formData" fields. Validation is not being performed.

To Reproduce Please run a server with: https://go.dev/play/p/IJ3IkfC3VxQ

My go.mod is:

module rest_example

go 1.23.1

require (
        github.com/go-chi/chi/v5 v5.2.1
        github.com/google/uuid v1.6.0
        github.com/swaggest/jsonschema-go v0.3.78
        github.com/swaggest/rest v0.2.74
        github.com/swaggest/usecase v1.3.1
)

require (
        github.com/cespare/xxhash/v2 v2.3.0 // indirect
        github.com/santhosh-tekuri/jsonschema/v3 v3.1.0 // indirect
        github.com/swaggest/form/v5 v5.1.1 // indirect
        github.com/swaggest/openapi-go v0.2.57 // indirect
        github.com/swaggest/refl v1.4.0 // indirect
        gopkg.in/yaml.v2 v2.4.0 // indirect
)

Test the code using cURL, with the field "desc" intentionally empty:

curl -v 'http://localhost:8080/example' \
  -H 'Accept: application/json, text/plain, */*' \
  -H 'Content-Type: multipart/form-data; boundary=----ExampleFormBoundary' \
  --data-raw $'------ExampleFormBoundary\r\nContent-Disposition: form-data; name="name"\r\n\r\nExample name\r\n------ExampleFormBoundary\r\nContent-Disposition: form-data; name="desc"\r\n\r\n\r\n------ExampleFormBoundary\r\nContent-Disposition: form-data; name="contact"\r\n\r\nFAX\r\n------ExampleFormBoundary\r\nContent-Disposition: form-data; name="extras"\r\n\r\n[{"reqID":"01976449-06ef-7317-af95-5643608b7d70","serverTimestamp":"2025-06-12T13:16:36Z"}]\r\n------ExampleFormBoundary\r\n'

Expected behavior cURL should show a bad request (HTTP Status 400) because field "desc" is not being populated.

Side note: field "extras" is not being populated.

dmlambea avatar Jun 13 '25 10:06 dmlambea