使用Spring设计RESTful Web服务

时间:2014-02-10 06:19:34

标签: spring web-services rest restful-architecture

需要针对以下查询提出一些建议:

  1. 如果客户想要访问特定资源,例如:http://sample.com/user/id/profile。 然后在这种情况下如何在客户端存储 id

  2. Cookie是否是上述问题的解决方案,如果是,那么在禁用cookie的情况下会发生什么?

  3. 如何使用HTTP方法PUT和DELETE?因为,HTML不支持它。

  4. 你们可以建议使用Spring设计RESTful Web服务的参考资料吗?

    由于

2 个答案:

答案 0 :(得分:0)

ID是URL中的固有ID,但您提供的文档也可以包含ID以方便使用。您没有提到您正在服务的内容类型,但假设它是XML或JSON,您可以粘贴ID属性。更好的是,客户端应该通过URL而不是ID来寻址。这就是HATEOAS原则的用武之地:提供带有其他文档链接的文档,并按照导航网页的方式导航文档。通常的做法是将众所周知的组件中的网址粘贴在一起,但最好说实体的网址是其ID。我工作的口头禅是“不要试图推理URL”,这意味着客户端不应该从我们的API解析URL,他们应该将其视为不透明的对象。因此,当您谈到“创建动态URL”时,请不要这样做。您可以通过搜索URL发现资源,例如/user/findByEmail?email=foo@example.com,它将返回与该电子邮件匹配的用户实体的集合。

在RESTful解决方案中,您不需要依赖cookie。有时它们很方便,因为它在常规网站上很方便,但你不需要cookie。如果这是一个真正的REST API,您需要记住cookie可能需要为客户端提供额外的工作。仅仅因为Web浏览器神奇地处理它们并不意味着有人用C#,Java,PHP,Ruby编写客户端,无论其他语言是什么,都有神奇的cookie支持。但是,标准HTTP非常普遍。

HTML表单不支持PUT&删除,虽然现在大多数人都通过Javascript访问REST API。如果您绝对必须在没有Javascript的情况下支持HTML表单,您可以将操作重载到POST上 - 即如果您的资源是/ user / id / profile,则将空文档POST到/ user / id / profile / delete或/ user / id /简介/更新。这不是很好的做法,但如果必须,你必须这样做。

答案 1 :(得分:0)

我不确定你是否得到了问题的答案。以下是我的想法:

如果客户想要访问特定资源,例如:http://sample.com/user/id/profile。然后在这种情况下如何在客户端存储id。

  • ANS :尝试使用您的客户(我假设其浏览器如Chrome)本地存储空间来保存ID

Cookie是否是上述问题的解决方案,如果是,那么在禁用cookie的情况下会发生什么?

  • ANS :见上面的答案,

如何使用HTTP方法PUT和DELETE?因为,HTML不支持它。

  • ANS :不确定问题。
相关问题