基于JavaScript的客户端3xx响应的RESTful替代方案
RESTful alternative to 3xx responses for JavaScript based clients
我们的REST服务需要指示客户端需要采取进一步的操作来完成请求(通常可以在另一个URI下找到对请求的响应)。
一般来说,这是通过HTTP 3xx响应来实现的。但是,对于基于JavaScript的客户端,在响应到达JavaScript代码之前,重定向是由浏览器自己执行的。基本上,我需要的是一种RESTful方式来通知客户端(JavaScript代码),响应可以在另一个URI下找到,并让客户端自己处理这样的响应。
我正在考虑两个解决方案:
HTTP 200 OK,后面有包含URI的实体。我不喜欢创建只携带URI的整个实体。我宁愿通过HTTP头
来实现这一点HTTP 204没有包含给定URI的Location头的Content响应。但在这里我不确定它是否"REST兼容"。是否可以将HTTP 204 No Content与主要用于重定向(以及HTTP 3xx响应)的位置标头相结合,或者当创建新资源时?
还是有更好的解决方案?
如果我理解正确的话,你有一个过程,比如说5个步骤。在第5步之后,有一些准备好的结果,您想要指向您的客户端,不是通过HTTP-3xx
,而是以更干净的方式。
我建议您在JSON
-response中使用link
属性:
{
...
"links": [
...
"result": { "href": "/calculation/1234" }
...
]
}
您的客户端可以接受这个答案并将其转换为一个简单的链接/按钮。
这符合HATEOAS
(Hypermedia As The Engine Of Application State),表明当前状态提供了引用的不同位置下的结果。
假设您有一个json响应格式,您可以接受一个请求参数,如noredirect
,当存在时将http响应代码设置为200,并在返回的对象中设置实际响应代码。
GET /some/resource
200 OK
{
status: 200,
…
}
GET /some/unknown/resource
404 Not Found
{
status: 404,
…
}
GET /some/unknown/resource?noredirect
200 OK
{
status: 404,
…
}
相关文章:
- 轻量级zxcvbn替代方案
- 正在寻找比$(document).ready慢的$(window).load的替代方案
- ng映射方向备选方案
- Backbone.js restful json API design
- 为什么$.brower被弃用?还有什么更好的替代方案
- 执行php函数的onclick事件的其他替代方案
- Android上URL方案的替代方案
- :not选择器不适用于ul类-备选方案
- 可以转换显示属性吗?如果没有,什么'这是最好的解决方案
- iPad虚拟键盘-哪一个-javasctript解决方案
- 在Hapi.js Restful API中了解请求IP
- jqlite中.first()的替代方案
- AJAX HTTP基本身份验证解决方案
- 微软边缘浏览器缓存中的RESTful Angular应用程序
- 在chrome web商店中打开时,是否有允许执行内容/后台脚本的解决方案
- Chart.js-添加渐变而不是纯色-实现解决方案
- learnyounode杂耍异步解决方案不工作
- 想在jquery中设计一个配色方案
- 需要确认我对Servlet vs RESTful网页的理解's的差异
- 基于JavaScript的客户端3xx响应的RESTful替代方案