我正在构建一个 REST 服务器(用于向我的客户发送书籍)
其余架构建议像这样构造 URL
如果我需要提供以下内容,什么是好的做法:
第一
我正在考虑/page/{id} (用于 json 信息)和/page/{id}/download 用于 doc 格式 (有这方面的建议吗?)
第二
我应该构建一个像/bookstatus 这样的新资源,还是应该为主要资源/book/{id}/status 和/book/{id} 提供多个选项以获取所有信息
我需要知道在这种情况下,url 是否有一些最佳实践和命名约定!
最佳答案
[学术咆哮] REST 不推荐 URI 模板,因为客户端需要知道此带外信息。您可以添加一些您喜欢的内容,但要使其易于猜测或编码。 [/学术咆哮]
该方法是获取应用程序的入口点,然后使用链接来指导您的客户。这样您的应用程序界面就会被发现,并且带外信息将保持在最低限度。
您提供的代理类型是通过内容协商或客户的明确请求来完成的。例如一些想法:
GET /mybooks (Content negotiation or server decides - feel like html?)
GET /mybooks.xml
GET /mybooks.json
GET /mybooks.csv
GET /mybooks.xhtml
GET /mybooks/{id}.doc (Download)
PUT /mybooks/{id} (Add a book / id to my list)
DELETE /mybooks/{id} (Remove from my list)
POST /mybooks (Add a book / id to my list)
注意:PUT 是幂等的,而 POST 不是。
书籍列表将以此媒体类型进行编码,例如带有特定书籍链接的描述。您可以按照自己想要的方式对超媒体(JSON 或 xHtml)中的链接进行编码,但最好使用某些标准(例如 <link>
和 <a>
标签)来吸引更广泛的受众。然后,您可以拥有指向所需格式的命名/类型链接。例如一些想法:
GET /book/{id}.html (Status and other info)
GET /book/{id}/summary (Status and other info)
GET /book/{id}.doc (Download)
GET /book/{id}.zip (Download)
GET /book/{id}/chapter/{id}.doc
POST /book (add book to database)
DELETE /book/{id} (Burn the book)
您可以根据需要设计 URI。但如果可以通过链接发现资源,那就更好了。您可以使用其他动词,例如 OPTIONS、HEAD、GETBOOKINFO 等,但最好坚持使用标准动词。
关于c# - 命名 Rest URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5361836/