This plan describes the plan alluded to in comments of #5152 to improve the web resource model.
The problems:
- No streaming uploads.
- No Deferred support in render(), and adding it wouldn't be backwards compatible.
- getChild makes it hard to conume multiple path segments at once. The current API also assumes the body is present (see problem 1).
The solution is a new resource model, re-using the existing HTTP server. Old resources will be able to be children of new resources. A series of tickets will do the following:
- Minimal new resource traversal API (#5379). Traversal will not have access to body. The current proposal is a (hopefully) improved version of the locateChild API used in nevow and web2.
- Add support for streaming bodies.
At that point a whole bunch of improvements can be done in parallel:
- render_GET etc. dispatch, maybe OPTIONS as well.
- Parsing POSTed forms, including file uploads. Web2 has a bunch of code we can hopefully re-use for this.
- Update the documentation.
- Compatibility with old resource model.
The hope is that having smaller tickets will allow ongoing reviews feature by feature.
