我正在构建一个应用程序,其中有jobs
,每个job
都有一些emails
与之对应。
我有以下网址结构
GET /jobs # Get all the jobs
GET /jobs/{jobId} # Get a job by ID
GET /jobs/{jobId}/emails # Get all emails corresponding to given job ID
POST /jobs # Create a job
PUT /jobs/{jobId} # To Create/update a particular job by ID
POST /jobs/_search # To get a large number of jobs with job IDs in the request body
现在我的问题是,获取给定作业ID列表的所有电子邮件的URL应该是什么?
例如。
我使用GET /jobs
来获取包含作业ID的作业列表。现在我想获取作业ID列表的所有电子邮件。
使用
是否是正确的REST结构POST /jobs/emails/_search # To get all emails corresponding to each job ID in the request body
POST /jobs/emails/_count # To get the counts of emails corresponding to each job ID in the request body
或者它应该只是
POST /emails/_search
POST /emails/_count
或两种模式是否都错了? 第一种语法对我来说似乎是正确的,因为没有作业就不能存在电子邮件。
获取多个资源的POST
搜索语法取自此SO answer。下划线的灵感来自elasticsearch api。
非常感谢任何帮助。谢谢!
答案 0 :(得分:2)
现在我的问题是,获取给定作业ID列表的所有电子邮件的URL应该是什么?
REST并不关心您用于标识符的拼写。如果您的API是hypertext driven,那么客户端只关注服务器提供的任何链接。
因此,在REST API中,hackable URI样式为optional。
使用POST查询并不是最佳的;它不是错误的,但它无法描述查询操作是safe,这对于客户端在消息传输不可靠时可能是有用的信息。
以某种方式将作业ID编码到URI中会更常见。在Web上,通常通过将它们放在URI的查询部分来完成。可以将它们放入其中一个路径段中。您可能希望查看实施对URI Templates的支持。