Sha*_*rat 6 rest hypermedia mediatypeformatter
我目前正在设计一种纯粹面向资源的企业服务.在阅读了几个博客,书籍等之后,我相信REST与超媒体链接是可行的方法.
但是,所有这些博客和书籍都说的一件事是在响应中使用超媒体链接时不使用application/xml作为媒体类型.他们都没有说明为什么除了通用语句之外 - 没有链接关系类型的普通URI不会将URI的语义传达给客户端.
根据我的理解,这是一种推荐的方法来定义您自己的自定义媒体类型,并使客户端知道如何阅读它.但是,如果知道连接到我的服务的客户端永远不会是浏览器,那重要吗?我不能只在application/xml类型的响应中公开这些链接吗?
我希望这里有人可以详细说明这一点.
您不必使用自定义媒体类型.实际上,REST试图阻止人们创建过于特定的媒体类型.理想的是媒体类型应该传达语义信息,但不是特定于任何特定服务.
application/xml的一个问题是它没有链接外观的标准定义.是吗
<Link rel="foo" href="/foo">
或者是它
<foo href="/foo">
还是其他一些变种?您的客户如何知道如何在不使用"带外"知识的情况下识别文档中存在哪些链接?"带外"知识是您想要避免的,因为它是导致客户端在服务器进行更改时中断的原因,而客户端无法保护自己免受带外知识的更改.
另一个问题application/xml是它不包含元素和属性层次结构之外的语义.语义必须由媒体类型或链接关系传达.如果您使用,application/xml则必须使用链接关系告诉客户端如何使用该文档.
在链接关系和媒体类型中传达语义之间可以有一个很好的平衡.但说实话,这个行业正试图弄清楚这种平衡究竟是什么,并且有很多人对这个问题有不同的看法.
我建议看看application/hal + xml.它是与通用XML最接近的东西,但定义了链接语义.
| 归档时间: |
|
| 查看次数: |
1852 次 |
| 最近记录: |