我们的一些用户要求我们在我们发送请求的HTTP标头中包含与其帐户相关的数据,甚至是我们从API获得的响应.在命名,格式化等方面添加自定义HTTP标头的一般惯例是什么?
另外,您可以随意发布您在网上偶然发现的任何智能用途; 我们正试图用最好的目标来实现这个目标:)
我与我的同事讨论了在202 Accepted响应中使用Location头的一个很好的概念.
故事从这里开始分析PHP header()函数的行为.有趣的摘录:
第二个特例是"Location:"标题.它不仅这个头发送回浏览器,但是除非201或3xx状态代码已经被设置也返回重定向(302)状态代码到浏览器.
它们未在此默认行为中包含202状态代码.看起来他们并不期望202响应有一个位置,事实上:
header("HTTP/1.1 202");
header("Location: http://example.com");
Run Code Online (Sandbox Code Playgroud)
将客户端重定向到位置URL.当然,也可以改变与header()函数的第三个参数,但一下就吸引了我的注意力被这种行为:为什么他们了解,默认202预计不会举行Location头?
然后我查看RFC,寻找202状态的官方含义.有趣的摘录:
返回此响应的实体应该包括请求的当前状态的指示,以及指向状态监视器的指针或用户可以期望满足请求的某些估计.
它没有明确地引用位置标头,就像之前(在相同的RFC文档中)201响应一样.这可能是PHP人员理解202响应不应该保持Location头的原因.指针会被解释为Location头还是PHP家伙做出了错误的假设?如果标准允许Location头有202响应:不应该像201响应定义更明确的官方文档?
最后,我回顾了最新的RFC版本,并发现编辑方面的一些变化:
与此响应发送表示应该描述请求的当前状态和(或嵌入)点状态监视器,一个当所述请求将被兑现的估计提供给用户.
同样,没有明确的假设指向 Location头.
简而言之,经过上述修订后:我是否使用带有202响应的Location标头符合RFC?
我正在 JAX-RS 2.0、JDK 8 中编写 REST API 以满足以下要求
POST API /server/fileUpload/(多部分表单数据),我需要在此发送一个大.AI(Adobe Illustrator)文件。
服务器获取文件并返回状态 202(已接受),确认文件传输成功。(从端点到服务器)
现在在服务器上,我使用 Java + Imagemagik 将 .AI 文件(20-25 MB 文件)转换为小 JPG 缩略图,放置在 Apache HTTP 服务器上并共享位置(例如http://happyplace/thumbnail0987.jpg)
现在,第二个响应应来自服务器,状态为 200 OK 且缩略图 URL
使用一个 REST API 可行吗?(异步/类似)
或者我应该将其拆分为 2 个 API 调用,请提出建议