refined, better HTTP server API #197
Merged
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 refines the
@http.run_serverhelper, replace it with a new type@http.Server:@http.Servercan be created via@http.Server::new(..). Separating creation and running of server allows random port for testing etc.@http.Servercan be run via.run_forever(..). Compared to@http.run_server,@http.Server::run_foreverhas the following merits:@http.Server::run_forever, the callback function only need to handle a single request@http.Server::run_foreveraccepts three parameters: the request, request body as a&@io.Reaedr, and the server connection for writing response. These parameters have better separation of concern, making request handling code easier to write and less error-prone..end_response()no longer result in crashing or error, as@http.Server::run_forevercan now automatically call.end_response()if the user forgot to do so@http.Serveralso supports plain.accept(), in case.run_forever(..)is not flexible enoughThe old
@http.run_serverAPI is deprecated.