rest
rest copied to clipboard
FormData validation not working
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.