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

时间:2014-05-18 08:29:02

标签: rest

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

单击“发送”时,理想情况下应将一个请求发布到服务器,将所有记录包装在一个批量提交中。虽然这不是真正的RESTful(我听说过),但似乎有可能发送50个单独的请求。但是,这样做的正确方法是什么?

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

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

1 个答案:

答案 0 :(得分:4)

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

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

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