在我设计的Play应用中,这些是我的一些路线
POST /visits controllers.Visit.create
GET /visits controllers.Visit.visits
GET /visits/:id controllers.Visit.visit(id: Long)
PUT /visits/:id controllers.Visit.update(id: Long)
DELETE /visits/:id controllers.Visit.delete(id: Long)
我也支持浏览器界面。我遵循在这里看到的指导:Play上的RESTful!构架
我可以轻松地提供一个HTML模板来显示有关一次特定访问或访问列表的详细信息。但是,“编辑页面”如何清晰地落入其中,而该页面必须预先填充特定访问的信息呢?我可以轻松地执行以下操作:GET /visits/:id/edit controllers.Visit.edit(id: Long)
它将返回一个包含访问信息的预/visits/:id
填充页面,或者我可以拥有一个静态HTML页面,该页面使用AJAX调用来调用来填充字段,这可以避免破坏资源驱动的API与浏览器页面相关的路由。还是有更好的选择?什么是最佳做法,为什么?
在REST中,仅仅为了执行标准化操作而创建其他资源就没有意义。每个知道HTTP协议的人都知道您的访问对象应该可以通过PATCH请求与您要应用的差异进行编辑,或者通过PUT请求将整个资源替换为新资源,然后进行编辑。为什么要使用POST创建自定义和非标准的编辑操作,而您将不得不对其进行记录并向所有人解释其工作原理?
从这种意义上讲,我的最佳选择是拥有一个驱动您的API的静态HTML页面,使用/ visits /:id上的GET填充字段,并使用编辑后的内容将/ visits /:id替换为提交时放置。
但是,请记住,只要尊重客户端发送的Accept标头,在API中使用特定于浏览器页面的路由就没有问题。在我的API上,当使用Accept:text / html标头发出请求时,有时会有一些路由返回人类友好的资源表示形式,因此这是拥有内置管理客户端的简单方法,并且可以轻松地使用API进行探索。浏览器。在REST中,API和WEB页面之间的唯一区别是,第一个返回机器友好格式的表示形式,第二个返回您希望浏览器在人类友好文档中呈现的表示形式。他们两个都应该具有链接和/或表单,以及有关如何编辑资源的说明。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句