Problems I've spent much time to solve:
- Web servers. More exactly, API servers that communicate through HTTP.
- Choosing the right status codes for the situations.
- Authentication. Fortunately oauthlib solves much of this. Though more efforts are still needed.
- Writing docs. I made sphinxcontrib-httpdomain to solve this, but it still is not fully automated.
- Exposing the data models and logical operations to them to HTTP. It has been always repeated by my hand.
- Writing unit tests. Assert the status code. Assert the response headers. Parse the response JSON. Compare it to the expected one. Repeat.
- Unit tests for the server test the equivalent logical semantics what unit tests for the model test.
Should the above situations be inherently repeated?
- ORM already knows much about the model logics. It might be possible to automatically expose to HTTP with some whitlisting.
- The purposes of HTTP status codes are more clear than we believe.
The most messages of the error responses duplicate the docs.
def login(): """ :status 400: when the password is incorrect """ if blah: response = jsonify(message='the pasword is incorrect') response.status_code = 400 return response
- More declarative test codes might be possible to generate both of model tests and server tests.