为什么下面的请求路径更restful?
我在曼宁的《Java游戏》一书中学习了游戏框架 这本书介绍了第二个请求路径比第一个更restful。因为页面列表会随着时间的推移而改变 即使可以改变,为什么第二个更好 GET/products/:页面控制器.products.list(页面:Int) GET/products/controllers.products.list(第页:Int)为什么下面的请求路径更restful?,rest,playframework,Rest,Playframework,我在曼宁的《Java游戏》一书中学习了游戏框架 这本书介绍了第二个请求路径比第一个更restful。因为页面列表会随着时间的推移而改变 即使可以改变,为什么第二个更好 GET/products/:页面控制器.products.list(页面:Int) GET/products/controllers.products.list(第页:Int) 书中实际上已经描述过,第一条路线需要参数,所以即使您不想使用任何参数,您也需要 /products/0 /products/1 /products/2
书中实际上已经描述过,第一条路线需要参数,所以即使您不想使用任何参数,您也需要
/products/0
/products/1
/products/2
等等
在第二个路由中,param是可选的,因此它在与寻呼机一起使用时非常有用
/products
/products?page=1
/products?page=2
当然,您可以使用第一种方法创建2条路线,以获得与可选参数等效的参数:
GET /products controllers.Application.products(page: Int ?= 0)
GET /products/:page controllers.Application.products(page: Int)
第一个更好,当您总是传递相同数量的参数并且所有参数都是必需的时
GET /cars/:manufacturer/:model/:option controllers.Application.cars(manufacturer, model, option)
Which must be: /cars/BMW/Z4/Pure-Balance
另一方面,当您有大量可选参数时,第二条路线更舒适
GET /filter controllers.Application.filter(query, order, direction)
which can be:
/filter?query=something&order=name&direction=desc
/filter?order=branch
/filter?query=something-else
等等
我们不能说一个更好,第二个更差,只是两者都有其他用途,请查看文档以熟悉url路径应该始终是唯一的资源标识符 该页远离唯一标识符。它作为参数是当前请求的一部分,因此您应该在queryString中或在queryString中发送它 例如:
-始终根据排序返回包含第一项资源的集合资源的表示形式GET/products?page=1&count=1
-始终返回具有GET/products/1
id=1