我有一个RESTful API,其中包含一个资源,我无条件PUT
数据,以确保它存在并且是最新的。 E.g:
PUT /users/username/ HTTP/1.0
Content-Type: text/json
{"email": "username@example.org"}
执行此类请求,我不在乎用户是否存在,我想要"创建或更新"逻辑。如果用户不存在,则会创建它(并且我将以201 Created响应)。如果它已经存在,API服务将确保其用户(电子邮件地址)的概念是最新的。
但是,我想知道它是否在语义上正确(相对于标准)以304 Not Modified(而不是通常的200 OK)响应非条件请求(没有任何If-*
标题),如果资源已经处于准确状态且未执行任何更改。
所以,我的问题是,只要标准允许这样的行为,允许但不鼓励或禁止它?
(注意:添加ETag或修改时间目前只会令人讨厌,并且会增加服务器端和客户端的复杂性。我不希望客户端保留任何内容目前额外的州信息。)