在Allow:标头中为重载的POST

时间:2015-05-16 02:08:13

标签: rest http

重载POST是REST API的常见做法,尤其是在使用HTML作为媒体类型时。

但是我想知道在Allow:标题中宣传重载POST的正确方法是什么。

使用可以读取和更新的典型资源,可以预期:

Allow: GET, HEAD, PUT

但是当我必须为PUT重载POST时,Allow:标题现在是否应该提及POST被接受?如果我希望只收到超载的PUT请求,它是否应该停止提及POST

1 个答案:

答案 0 :(得分:2)

我总是会考虑这些问题行为,关于哪些客户会关心响应的这一方面,以及它会对这些客户产生什么影响。

因此,具体而言,哪些客户关心并使用Accept标题,以及这些客户会产生什么影响?

首先是网络浏览器。我最初的想法是,如果你正在使用CORS,那么Accept标题的值可能与网络浏览器相关,可能需要包含POST。但实际上Access-Control-Allow-Methods。因此,据我所知,Allow标题实际上对浏览器客户端没有任何行为影响。

然后是程序化客户端。在这些情况下,非重载方法很可能是您要列出的方法。 (例如,也许您将拥有文档生成客户端来检查和显示允许的方法。从用户的角度来看,它更有意义。)

最后,用户正在直观地检查您的API响应。在这种情况下,我可能会更喜欢重载的方法集,因为它更具信息性。

简而言之 - 我可能只会列出允许的重载方法集,而不包括POST。浏览器通常是唯一会发出重载请求的客户端,我不知道它以任何方式使用或检查Accept标头。