通常,URL方案将反映域。如果这个领域是一个图书馆管理系统,那么图书和借书的用户之间就会有一种关系。例如,一个可以返回user_id是否借来一本书的URL可能是:
代码语言:javascript运行复制/book/{book_id}/{user_id}这并不理想,因为它几乎像RPC一样,您要调用一个返回TRUE或FALSE的函数。REST应该返回对象当前状态的表示形式。
查询
这个用户借了哪些书?
代表可包括:
代码语言:javascript运行复制/user/{user_id}/books查询
代码语言:javascript运行复制which users have borrowed this book代表可包括:
代码语言:javascript运行复制/book/{book_id}/users翻译成一个域:
User可以借用Book的
因此,URL启动/user
Book可以由User的
因此,URL启动/book
从/user或/book开始,您可以向每个url添加更多的部件以查询资源。
查询参数通常用于细化结果,而不是影响资源的状态。例如,您可以有相同表示的不同格式:
代码语言:javascript运行复制/user/{user_id}/books?format=xml
/user/{user_id}/books?format=json