RESTful POST请求,如果POST数据上已经存在记录,我们是返回200 OK还是304 Not Modified?
我有一个POST请求端点,用户在这里反复发布数据。在将数据插入数据库之前,我会根据用户请求检查记录是否已经存在。 -如果记录已经存在,我返回200 OK,响应体包含表id和状态 -若记录不存在,我将创建新记录并返回200 OK,响应体包含表id和状态 基本上在这两种情况下,用户都获得状态200。作为用户,它可能会让人困惑,因为人们无法区分它是新记录还是现有记录 我想我会返回304,并告知消费者该请求“未修改”,这样消费者就会做出决定RESTful POST请求,如果POST数据上已经存在记录,我们是返回200 OK还是304 Not Modified?,rest,http,Rest,Http,我有一个POST请求端点,用户在这里反复发布数据。在将数据插入数据库之前,我会根据用户请求检查记录是否已经存在。 -如果记录已经存在,我返回200 OK,响应体包含表id和状态 -若记录不存在,我将创建新记录并返回200 OK,响应体包含表id和状态 基本上在这两种情况下,用户都获得状态200。作为用户,它可能会让人困惑,因为人们无法区分它是新记录还是现有记录 我想我会返回304,并告知消费者该请求“未修改”,这样消费者就会做出决定 这是一种好的做法,还是RESTful主体中有替代方法。304仅
这是一种好的做法,还是RESTful主体中有替代方法。
304
仅用于有条件的GET
响应,以表明请求的内容自客户端上次请求以来没有更改。这不适用于POST
响应
对于POST
响应,如果创建了新记录,则使用201
,否则使用200
或可能使用409
有关设计REST API的一些有用提示,请参见以下内容:
304未修改
将在使用HTTP缓存头时使用,因此这不适用于您的情况
当请求格式正确但存在语义错误时,我将使用422不可处理实体
,用于验证错误
如果该记录以前不存在,您应该回答
201 Created
(而不是200 OK
),这是成功创建资源的标准响应(在创建后请求之后)。我在这里遇到了这个有趣的话题。哪一个需要使用302-找到,303-参见其他,304-未修改。302对我来说更有意义:-)RFC注意到应该使用303(见其他)。可能是