Rest 针对不支持的修补程序返回的HTTP代码

Rest 针对不支持的修补程序返回的HTTP代码,rest,http,dropwizard,http-patch,Rest,Http,Dropwizard,Http Patch,我正在dropwizard REST资源上实现一个补丁方法。 目前,只能修补资源属性的一个子集。目前只能完成替换操作 如果我看到对不受支持的属性/路径的修补程序请求,我应该返回哪个HTTP代码?如果请求不支持的添加或删除操作,我应该返回什么 如果我看到对不受支持的属性/路径的修补程序请求,我应该返回哪个HTTP代码 在这种情况下,服务器应该返回以指示目标资源不支持HTTP方法。除了状态代码外,服务器还必须返回一个标头,列出该资源支持的方法: 405方法不允许状态代码表示该方法 原始服务器知道在请

我正在dropwizard REST资源上实现一个补丁方法。 目前,只能修补资源属性的一个子集。目前只能完成替换操作

如果我看到对不受支持的属性/路径的修补程序请求,我应该返回哪个HTTP代码?如果请求不支持的添加或删除操作,我应该返回什么

如果我看到对不受支持的属性/路径的修补程序请求,我应该返回哪个HTTP代码

在这种情况下,服务器应该返回以指示目标资源不支持HTTP方法。除了状态代码外,服务器还必须返回一个标头,列出该资源支持的方法:

405方法不允许状态代码表示该方法 原始服务器知道在请求行中接收到的信息,但不知道 由目标资源支持。源服务器必须生成一个 包含目标列表的405响应中的Allow header字段 资源当前支持的方法

如果请求不支持的添加或删除操作,我应该返回什么

我假设您指的是JSON文档中的和操作,它描述了应用于JSON文档的一系列操作,并且适合与补丁HTTP方法一起使用

因此,请看文档中定义补丁HTTP方法的部分

事实上,问题中描述的情况是,由于语义原因,服务器无法处理实体。因此,这是一个合理的选择,根据:

无法处理的请求:可以使用422无法处理的 服务器启动时的实体响应 了解修补程序文档和修补程序的语法 文档似乎有效,但服务器无法 处理请求。这可能包括尝试修改 以可能导致资源无效的方式使用资源; 例如,对格式良好的XML文档的修改 会导致它的格式不再正确。[……]

还要记住同一文件中的以下建议:

错误响应的实体体应该包含足够的信息 向客户机传达错误的性质。内容- 响应实体的类型可能因实现而异

定义可用于报告HTTP API中问题的文档格式

如果我看到对不受支持的属性/路径的修补程序请求,我应该返回哪个HTTP代码

在这种情况下,服务器应该返回以指示目标资源不支持HTTP方法。除了状态代码外,服务器还必须返回一个标头,列出该资源支持的方法:

405方法不允许状态代码表示该方法 原始服务器知道在请求行中接收到的信息,但不知道 由目标资源支持。源服务器必须生成一个 包含目标列表的405响应中的Allow header字段 资源当前支持的方法

如果请求不支持的添加或删除操作,我应该返回什么

我假设您指的是JSON文档中的和操作,它描述了应用于JSON文档的一系列操作,并且适合与补丁HTTP方法一起使用

因此,请看文档中定义补丁HTTP方法的部分

事实上,问题中描述的情况是,由于语义原因,服务器无法处理实体。因此,这是一个合理的选择,根据:

无法处理的请求:可以使用422无法处理的 服务器启动时的实体响应 了解修补程序文档和修补程序的语法 文档似乎有效,但服务器无法 处理请求。这可能包括尝试修改 以可能导致资源无效的方式使用资源; 例如,对格式良好的XML文档的修改 会导致它的格式不再正确。[……]

还要记住同一文件中的以下建议:

错误响应的实体体应该包含足够的信息 向客户机传达错误的性质。内容- 响应实体的类型可能因实现而异

定义可用于报告HTTP API中问题的文档格式

我的票数是405:

405方法不允许

不支持的请求方法 请求的资源;例如,表单上的GET请求需要 通过POST或只读的PUT请求显示的数据 资源

加上凯西奥关于提供足够的 描述错误的信息。

我的投票是405:

405方法不允许

不支持的请求方法 请求的资源;例如,表单上的GET请求需要 通过POST或只读的PUT请求显示的数据 资源


再加上Cassio关于提供足够信息来描述错误的建议。

405不适合这种情况,因为它将指示资源不支持修补程序本身。引用:405 Method Not Allowed状态代码表示在请求行中接收到的方法是源服务器已知的,但目标资源不支持该方法。@CassioMazzochiMolin-OP说,如果我看到不支持的属性/路径的修补程序请求,我应该返回哪个HTTP代码。这不正是您刚才引用的吗?资源不支持该方法吗?对我来说,使用WEBDAV特定的代码似乎是错误的。结果是OP有两个不同的问题,而我最初忽略了这一点。您的答案解决了特定资源不支持修补程序的情况。因此,我对您的答案投了更高的票。405不适合这种情况,因为它将指示资源不支持修补程序本身。引用:405 Method Not Allowed状态代码表示在请求行中接收到的方法是源服务器已知的,但目标资源不支持该方法。@CassioMazzochiMolin-OP说,如果我看到不支持的属性/路径的修补程序请求,我应该返回哪个HTTP代码。这不正是您刚才引用的吗?资源不支持该方法吗?对我来说,使用WEBDAV特定的代码似乎是错误的。结果是OP有两个不同的问题,而我最初忽略了这一点。您的答案解决了特定资源不支持修补程序的情况。因此我对你的答案投了赞成票。我意识到我的帖子可以解释为两个问题。所以我选择这个作为答案。我想问的问题的答案是第二个,代码422。我的意思是支持补丁动词。但仅针对json修补程序文档中路径的某些值,而不是url路径。我意识到我的帖子可以解释为两个问题。所以我选择这个作为答案。我想问的问题的答案是第二个,代码422。我的意思是支持补丁动词。但仅针对json修补程序文档中路径的某些值,而不是url路径。仅限op:更换。