REST请求类型,用于多对多关系

时间:2015-09-18 14:55:17

标签: rest uri naming-conventions

表格结构

session
-------------------------
id | name | date
-------------------------

speaker
-------------------------
id | name 
-------------------------

session_speaker
-------------------------
session_id | speaker_id 
-------------------------

请求方法

a) GET /speakers (all speakers)

b) GET /speakers/:id (details on specific speaker)

c) GET /speakers/:id/sessions (list of sessions of a speaker)

问题

我应该提出什么类型的请求来表明我不仅需要发言者的详细信息,还需要它的会话,基本上将呼叫(b)和(c)的结果合并为一个。

另外,如何在真正的商业项目中完成?客户端进行两次调用(b& c)或者他们是否开发了另一个REST端点,因此结合了b& c在一个电话中?

或者客户应该发出两个请求?

1 个答案:

答案 0 :(得分:0)

实际上,您可以将响应有效负载中要包含的字段指定为查询参数。类似的东西:

GET /speakers/someid?fields=firstname,lastname,age,sessions

另一种方法(更好的方法)应该是利用标题Prefer(请参阅规范的此链接:https://tools.ietf.org/html/rfc7240)来指定您希望在响应有效负载中包含哪种详细信息:

  • return=minimal:只有发言人提示
  • include=sessions:发言人提示和他/她的会议

以下是一个示例:

 Get /speakers/someid HTTP/1.1
 Host: api.example.org
 Content-Type: application/json  
 Prefer: include=sessions
 Vary: Prefer,Accept,Accept-Encoding

Irakli Nadareishvili写了一篇关于这个主题的精彩博文:http://www.freshblurbs.com/blog/2015/06/25/api-representations-prefer.html

希望它可以帮到你, 亨利

相关问题