Preview HTTPHandler Macro (@HTTPRoute / @JSONRoute) #73
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.
An experimental preview of
@HTTPRoute
and@JSONRoute
to annotate functions with routes.The annotations are implemented via SE-0389 Attached Macros available in Swift 5.9 and later.
A handler is able to annotate its functions with routes:
The macro synthesises conformance to
HTTPHandler
delegating handling to the first matching route. Expanding the example above to the following:@HTTPRoute
annotations can specify specific properties of the returnedHTTPResponse
:@JSONRoute
annotations can be added to functions that acceptCodable
types.JSONDecoder
decodes the body that is passed to the method, the returned object is encoded to the response body usingJSONEncoder
:The original
HTTPRequest
can be optionally passed to the method:JSONEncoder
/JSONDecoder
instances can be passed for specific JSON coding strategies: