refactor(server): use httpx.Router #856
Draft
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.
Motivation
The
cmd/serverpredates thehttpxpackage, and have many utility types, functions that are already implemented in packagehttpx. Also, routing using pattern matching creates deep nesting code level, making it hard to read & understand.Changes
This PR uses
Routertypes & methods fromhttpxpackage to refactor thecmd/serverpackage to use it for routing HTTP request. Such refactor greatly reduced the nesting level of the code, improved the overall readability. Also, this PR replace the privateJsonErrordefined incmd/serverwith the one inhttpxfor early exiting and error-reporting. Additionally, this PR changes the hard-coded HTTP status code to use constants defined inhttpx/status, eliminating the pass of thereasonargument, making the HTTP server hebaves more consistently and reduce possibility of human error by mismatching reason string and status code.