REST API URL结构

时间:2018-04-20 07:44:07

标签: rest api

我正在构建一个应用程序,其中有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。

非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:2)

  

现在我的问题是,获取给定作业ID列表的所有电子邮件的URL应该是什么?

REST并不关心您用于标识符的拼写。如果您的API是hypertext driven,那么客户端只关注服务器提供的任何链接。

因此,在REST API中,hackable URI样式为optional

使用POST查询并不是最佳的;它不是错误的,但它无法描述查询操作是safe,这对于客户端在消息传输不可靠时可能是有用的信息。

以某种方式将作业ID编码到URI中会更常见。在Web上,通常通过将它们放在URI的查询部分来完成。可以将它们放入其中一个路径段中。您可能希望查看实施对URI Templates的支持。