-
Notifications
You must be signed in to change notification settings - Fork 16
Open
Description
In #96 we realized that the Braid-HTTP illustrates a range of ways to express Updates (aka "New Version" messages), but doesn't fully articulate the general form. This results in a lot of confusing ambiguity about what the spec allows.
I propose writing up a general form for Updates:
- Equivalence between a GET response, and PUT request, PATCH request, or POST request
- All of these forms express an "update", either from server to client, or client to server
- GET and PUT use Patch-Type where PATCH uses Content-Type
- TBD: What shall we say about POST? Is there a recommended use for POST with Braid-HTTP?
- Equivalence between regular regular HTTP update and Patches: 1
- Patches: N is optional extension for all updates, and defines a "second level" of framing within an update
- If you have only one patch, you can eliminate that extra framing, and merges the patch headers with normal update headers. This is equivalent to the update format of an existing HTTP message, like a Partial PUT.
- Guidance to ensure that Braid PUTs to legacy servers (that don't understand them) don't clobber state.
- See Guidance for PUTs to legacy servers #117 for discussion of what to include here.
This should satisfy the questions raised in issue #96, and ensure we have symmetry across range requests and responses in the design under consideration in #97 (comment).
Finally, once we articulate the general space of possible updates, we also noted in #96 (comment) that we might want to impose some constraints on this general form in practice, so we should deliberate what those might be, and articulate any that we want to impose.
Open Questions:
- What is there to say about POST? Do we see a use for POST in Braid-HTTP? Do users of POST need to know anything special when using it with Braid?
- Do we want any constraints on this general space of updates, like requiring
Patches: 1in subscription responses as mentioned in issue 97, that might simplify implementations? - What do we think about Guidance for PUTs to legacy servers #117?
Metadata
Metadata
Assignees
Labels
No labels