Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds the
POST /register
endpoint and a supporting types for implementing further HTTP handlers.Generic handlers
Earlier I wrote a post about generic HTTP handlers, this PR expands on the code from the article by introducing a generic "mapper" with three types of constructor functions:
mapRequest
: maps a HTTP request to target function input.mapResponse
: maps the result of a target function to a HTTP response.mapBoth
: maps both of the above.The mapper allows for functionality to be overwritten when needed, this will be especially handy for mapping responses: For some endpoints we might want to redirect to another URL, while for others we will want to return a
2xx
status code and a body.At the moment input is mapped using the
gorilla/schema
package. It checks if types implementencoding.TextMarshaler
so works pretty well with our custom types.The code can be found in
internal/web/mapper.go
. Check it out.