我正在用 Play 实现一个 RESTful API ......即使我倾向于只支持 JSON,看起来也支持 XML 是一种好习惯。我在 Internet 上阅读了一些关于如何设计好的 RESTful API 和理解的媒体类型应该在 URL 中的有趣文章——最常用的选项似乎是将.json
or.xml
扩展名附加到端点 URL。
现在的问题是:如何在 Play 中实现这一点?我应该像这样为每种格式定义一条路线:
GET /products.json/:id controllers.Products.show(id: Int, format: String = "json")
GET /products.xml/:id controllers.Products.show(id: Int, format: String = "xml")
...或者我应该定义这样的东西:
GET /products.:format/:id controllers.Products.show(id: Int, format: String)
就个人而言,我更喜欢在Accept header
... 中指定媒体类型,但看起来不鼓励这样做,或者至少不是最佳做法。