我有一个允许用户向其他人发送邀请的表单。邀请的数量可由用户在用户界面中配置,并且理论上可以是无限的。用户需要为每个邀请定义一个电子邮件地址。
单击“发送”时,理想情况下应该向服务器发送一个请求,将所有记录包装在一次批量提交中。尽管这并不是真正的 RESTful(我听说),但它似乎比发送可能 50 个单独的请求更有利。但是,执行此操作的正确方法是什么?
当其中一个邀请由于电子邮件地址格式错误或重复邀请等原因而失败时,事情就会变得棘手。正确处理其他有效请求并在无效请求上提供错误是很好的,但是为此使用什么响应状态代码呢?
通常我尝试使用 JSONAPI 请求格式。错误将位于称为错误的顶级对象中,并且将是由多个对象组成的数组。错误对象中的字段键将指向错误的记录索引号(如在请求中接收到的)和字段名称,即"field": "/invites/0/email"
第一个收到的记录中的电子邮件字段出现错误。
我见过的“批量请求”问题的最佳解决方案是 Google Calendar 的 API。它是一个 RESTful API,因此每个资源都有一个 URL,您可以使用标准 REST 语义(即 GET、POST、PUT、DELETE)对其进行操作。但该 API 还公开了一个“/batch”端点,它接受“mixed/multipart”的内容类型,并且请求正文包含多个嵌套的 HTTP 请求,每个请求都有自己的标头、方法、url 和所有内容。该响应也是一个内容类型为“混合/多部分”的 HTTP 响应,其中包含单个 HTTP 响应的集合,每个请求一个响应。
该解决方案的优点在于
1. 它允许您以 RESTful 方式设计系统,这是我们都知道和喜爱的。
2. 它可以很好地推广到您的系统可以处理的任何 HTTP 请求组合。
欲了解更多信息,请参阅:https://developers.google.com/google-apps/calendar/batch https://developers.google.com/google-apps/calendar/batch
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)