重载POST是REST API的常见做法,尤其是在使用HTML作为媒体类型时。
但是我想知道在Allow:标题中宣传重载POST的正确方法是什么。
使用可以读取和更新的典型资源,可以预期:
Allow: GET, HEAD, PUT
但是当我必须为PUT重载POST时,Allow:
标题现在是否应该提及POST
被接受?如果我希望只收到超载的PUT
请求,它是否应该停止提及POST
?
答案 0 :(得分:2)
我总是会考虑这些问题行为,关于哪些客户会关心响应的这一方面,以及它会对这些客户产生什么影响。
因此,具体而言,哪些客户关心并使用Accept
标题,以及这些客户会产生什么影响?
首先是网络浏览器。我最初的想法是,如果你正在使用CORS,那么Accept
标题的值可能与网络浏览器相关,可能需要包含POST
。但实际上Access-Control-Allow-Methods
。因此,据我所知,Allow
标题实际上对浏览器客户端没有任何行为影响。
然后是程序化客户端。在这些情况下,非重载方法很可能是您要列出的方法。 (例如,也许您将拥有文档生成客户端来检查和显示允许的方法。从用户的角度来看,它更有意义。)
最后,用户正在直观地检查您的API响应。在这种情况下,我可能会更喜欢重载的方法集,因为它更具信息性。
简而言之 - 我可能只会列出允许的重载方法集,而不包括POST
。浏览器通常是唯一会发出重载请求的客户端,我不知道它以任何方式使用或检查Accept
标头。