Why Develop httpz
The net/http version 1.22 has enhanced routing capabilities, allowing us to develop a complete web project without third-party routers (frameworks) like Echo, gin, and chi. However, the standard library’s pursuit of simplicity makes its user experience less convenient than third-party frameworks.
For example:
-
Grouping is inconvenient.
net/httpuses theHandle(pattern, http.Handler)function to forward requests of the same group tohttp.Handler, which is not easy to manage. In contrast, theEchoframework directly usesGroup(pattern)to achieve this. -
Centralized error handling in Echo is a good practice. We should return errors in the
handler, which can reduce the workload of error handling. -
Data binding needs to be implemented manually. When a handler needs to bind many request parameters,
net/httprequires you to bind them one by one. -
When returning a response,
net/httprequires you to manually set the response headers, status code, and response body, which can lead to repetitive code.
What is httpz
httpz is a collection of the following features:
- Based on
net/httpversion 1.22+ - Global error handling
- Convenient grouping
- Middleware from chi
- Data binding from Echo
- Quick response returns
httpz is merely an enhancement library for net/http, not a new framework. Using httpz is essentially developing with the net/http standard library.
httpz is fully compatible with net/http, allowing you to choose to use httpz’s enhanced features or directly use net/http.
Design Philosophy
- Zero dependencies, all features are implemented based on the
net/httpAPI. - Convenient and non-intrusive. You can still develop using the
net/httpconventions. - It is an enhancement library, not a new framework.