Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add context to the go-server generated code #5877

Closed
wants to merge 1 commit into from
Closed

Add context to the go-server generated code #5877

wants to merge 1 commit into from

Conversation

randomswdev
Copy link
Contributor

@randomswdev randomswdev commented Apr 9, 2020

PR checklist

  • Read the contribution guidelines.
  • If contributing template-only or documentation-only changes which will change sample output, build the project before.
  • Run the shell script(s) under ./bin/ (or Windows batch scripts under.\bin\windows) to update Petstore samples related to your fix. This is important, as CI jobs will verify all generator outputs of your HEAD commit, and these must match the expectations made by your contribution. You only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the code or mustache templates for a language ({LANG}) (e.g. php, ruby, python, etc).
  • File the PR against the correct branch: master, 4.3.x, 5.0.x. Default: master.
  • Copy the technical committee to review the pull request if your PR is targeting a particular programming language.

Update the go-server code genertor in order to:

  1. return 400 in case of an invalid input parameter (very likely is not an internal error).
  2. use baseName instead of paramName when gettin a parameter from maps (this makes difference for a parameter like "user-id")
  3. pass the ctx to the called handlers, so that they can take decisions based on the calling context and propagate it in ase of down calls.
  4. allow handlers to return a status code. And handler that creates a resource should be allowed to return HTTP 201 instead of HTTP 200.
  5. allow an handler to return a reponse function in order to fully customize the response. This is useful when, for example, redirecting a requestor; in this case both a custom state and custom headers have to be returned.

@antihax @bvwells @grokify @kemokemo @bkabrda please review.

GetPetById(context.Context, int64) (interface{}, int, error)
UpdatePet(context.Context, Pet) (interface{}, int, error)
UpdatePetWithForm(context.Context, int64, string, string) (interface{}, int, error)
UploadFile(context.Context, int64, string, *os.File) (interface{}, int, error)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@randomswdev thanks for the PR. Is it correct to say that this PR introduces breaking changes as the method signature has changed?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, this merge request changes the signature of the generated methods. While the changes are breaking ones, I think that adding the context propagation is much needed to allow generating really useful go stubs.

@randomswdev
Copy link
Contributor Author

Closing as, currently, this has been lready implemented by:
#7214
#7397

@randomswdev randomswdev closed this Dec 7, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants