Response Customization
Learn how to customize validation responses in NLG Form using custom messages, unique error codes, and configurable HTTP validation response options.
The httpform package provides configurable response options for APIs that require standardized validation responses across frontend applications, backend services, or distributed systems.
Response customization is handled through:
httpform.ResponseOptionsThis allows validation handlers to control:
- validation messages
- invalid JSON messages
- response formatting
- unique validation error codes
ResponseOptions
Example:
opts := httpform.ResponseOptions{
ErrorFormat: httpform.ErrorFormatMap,
ValidationMessage: "please check your input",
InvalidJSONMessage: "request body is not valid JSON",
UniqueCodes: true,
}Custom Validation Messages
Custom validation messages override the default top-level validation response.
Example:
ValidationMessage: "please check your input"Response example:
{
"message": "please check your input",
"errors": {
"email": [
{
"code": "email_invalid",
"message": "must be a valid email"
}
]
}
}This is useful for:
- API consistency
- frontend integrations
- localization pipelines
- standardized service responses
Invalid JSON Messages
The InvalidJSONMessage option customizes malformed JSON responses.
Example:
InvalidJSONMessage: "request body is not valid JSON"This separates:
- parsing errors
- validation errors
- successful requests
while keeping response contracts consistent.
Unique Error Codes
Validation rules may generate duplicate error codes for a single field.
Example:
UniqueCodes: trueWhen enabled, duplicate validation codes are automatically removed from the response.
This is useful for:
- frontend validation rendering
- API response normalization
- validation aggregation
- simplified error handling
Complete Example
opts := httpform.ResponseOptions{
ErrorFormat: httpform.ErrorFormatMap,
ValidationMessage: "please check your input",
InvalidJSONMessage: "request body is not valid JSON",
UniqueCodes: true,
}
if !httpform.BindAndValidateWithOptions(
w,
req,
&in,
ResponseExampleSchema(),
1<<20,
opts,
) {
return
}Response customization allows APIs to standardize validation behavior while keeping validation schemas reusable and transport-independent.
Notes
ResponseOptionsonly affects HTTP response formatting and does not modify schema validation behavior.- Validation schemas remain reusable independently of HTTP transport and response serialization.
UniqueCodesremoves duplicated validation codes per field but preserves the original validation execution order.BindAndValidateWithOptionsis typically used in APIs that require consistent response contracts across multiple services or frontend applications.- Validation helpers automatically write the HTTP response and should generally return immediately after validation failure.
- Response customization is transport-level behavior and should remain separate from business validation logic whenever possible.
HTTP Responses
Learn how NLG Form binds and validates HTTP JSON requests and returns structured validation responses using map responses, flat responses, custom messages, invalid JSON handling, and unique error codes.
Validation Rules
Learn how validation rules work in NLG Form using reusable, composable, type-safe rule pipelines for strings, numbers, booleans, slices, formats, and cross-field validation.