url 中包含哪些数据,post 请求中包含哪些数据?
REST API 是一种外观。当我们创建一个 REST API 时,我们真正在做的是提供一个接口,其行为类似于一个符合 HTTP 的文档存储(也称为“网站”)。
URI 是用于从存储中检索正确文档的密钥。这里要考虑的python 模拟是dictionary。
在简单的情况下,我们考虑两个字典;第一个是在源服务器上使用,以跟踪每个资源的权威副本。
第二个字典是客户端使用的cache。使用标识符作为键存储资源的表示。
HTTP 为缓存条目的invalidated 提供了明确的语义;该失效是由于成功的“不安全”请求而发生的。
换句话说,当我们决定在哪里发布消息时,我们选择的其中一件事是应该使先前缓存的资源无效。缓存中的哪个主文档会因成功处理消息而发生变化?
这告诉我们,我们为 POST 请求编码到 URI 中的信息应该与我们在对同一文档执行 GET 请求时编码到 URI 中的信息相同。
相比之下:请求正文不会以任何方式影响缓存 - REST 的部分要点是通用组件所需的所有信息都包含在标准化元数据中。没有通用组件需要解析消息体来了解transport documents over a network 域中发生的事情。
因此,您几乎可以对消息正文做任何您喜欢的事情。
例如,将您需要的所有信息放入消息正文中是完全合理的,其中一些信息也在 URI 中重复。
对于您的具体时间表示例,我感兴趣的问题是您使用什么 URI 来读取时间表?如果我们使用类似
的方式检索文档
GET /mycoolwebapp.com/api/timesheet/10/2020-08-18 HTTP/1.1
那么这将是更新该文档的服务器副本的一种完全合理的方式
POST /mycoolwebapp.com/api/timesheet/10/2020-08-18 HTTP/1.1
Content-Type: application/json
{'user_id': 10, 'date': '2020-08-18', 'hours' : 8, 'operation': 'documentation'}