OpenAPITools / OpenAPITools/openapi-generator
[REQ] Pattern validation in Go generator
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 26.8k
- Forks
- 7.7k
- PR merge metrics
- PR metrics pending
Description
Is your feature request related to a problem? Please describe.
The go generator currently doesn't support any form of string validation.
OpenAPI has a pattern parameter on properties that allows specifying a validation regex, and this is supported for some generators, but not Go.
Describe the solution you'd like
There are several Go packages available that support regex validation on struct fields via annotations.
I'm using https://github.com/go-validator/validator/tree/v2 at the moment, with structs of this form:
type MyObject struct {
// An IPv4 address
IPAddress string `json:"IPAddress" validate:"regexp=^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$"`
}
This struct should be generated by an OpenAPI definition like this:
MyObject:
type: object
properties:
IPAddress:
type: string
description: An IPv4 address
pattern: '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$'
Describe alternatives you've considered
Since the pattern field doesn't do anything, I'm using x-go-custom-tag instead, but this isn't portable to other languages:
MyObject:
type: object
properties:
IPAddress:
type: string
description: An IPv4 address
x-go-custom-tag: validate:"regexp=^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$"
Additional context
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the Go generator's handling of OpenAPI string properties and the pattern parameter, then review how x-go-custom-tag is currently applied. Done means an OpenAPI pattern produces the requested validation annotation in the generated Go struct, with behavior matching the IPv4 example.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go, openapi
- Domain
- api, tooling
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100