为什么下面的请求路径更restful?

为什么下面的请求路径更restful?,rest,playframework,Rest,Playframework,我在曼宁的《Java游戏》一书中学习了游戏框架 这本书介绍了第二个请求路径比第一个更restful。因为页面列表会随着时间的推移而改变 即使可以改变,为什么第二个更好 GET/products/:页面控制器.products.list(页面:Int) GET/products/controllers.products.list(第页:Int) 书中实际上已经描述过,第一条路线需要参数,所以即使您不想使用任何参数,您也需要 /products/0 /products/1 /products/2

我在曼宁的《Java游戏》一书中学习了游戏框架

这本书介绍了第二个请求路径比第一个更restful。因为页面列表会随着时间的推移而改变

即使可以改变,为什么第二个更好

GET/products/:页面控制器.products.list(页面:Int)

GET/products/controllers.products.list(第页:Int)


书中实际上已经描述过,第一条路线需要参数,所以即使您不想使用任何参数,您也需要

/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
顺便说一句,我建议你,“产品”可能不是最好的词,在列表中不是这种格式