RESTful:在一个请求中创建多个记录

Kre*_*ieD 6 rest

我有一个表单,允许用户向其他人发送邀请。邀请的数量可由用户在用户界面中配置,理论上可以是无限的。用户需要为每个邀请定义一个电子邮件地址。

单击“发送”时,最好向服务器发送一个请求,将所有记录包装在一次批量提交中。尽管这不是真正的 RESTful(我听说过),但它似乎比发送 50 个单独的请求更有利。但是,这样做的正确方法是什么?

当其中一个邀请因格式错误的电子邮件地址或重复邀请而失败时,这会变得很棘手。正确处理其他有效请求并在无效请求上提供错误是可以的,但是对此使用什么响应状态代码?

通常我尝试使用 JSONAPI 请求格式。错误将在一个名为 errors 的顶级对象中,并且是一个由多个对象组成的数组。错误对象中的字段键将指向记录索引号(在请求中接收到的)和错误的字段名称,即"field": "/invites/0/email"第一个接收到的记录中电子邮件字段上的错误。

gil*_*sho 6

我见过的“批量请求”问题的最佳解决方案是 Google Calendar 的 API。它是一个 RESTful API,因此对于您可以使用标准 REST 语义(即 GET、POST、PUT、DELETE)操作的每个资源都有一个 URL。但是 API 还公开了一个“/batch”端点,它接受“mixed/multipart”的内容类型,并且请求正文包含几个嵌套的 HTTP 请求,每个请求都有自己的标头、方法、url 和所有内容。响应也是一个 HTTP 响应,内容类型为“混合/多部分”,其中包含一组单独的 HTTP 响应,每个请求一个响应。

该解决方案的优势在于 1. 它允许您以 RESTful 方式设计您的系统,这是我们都知道和喜爱的。2. 它可以很好地推广到您的系统可以处理的任何 HTTP 请求组合。

有关更多信息,请参阅:https : //developers.google.com/google-apps/calendar/batch