程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了创建无冲突的 RESTful 操作大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决创建无冲突的 RESTful 操作?

开发过程中遇到创建无冲突的 RESTful 操作的问题如何解决?下面主要结合日常开发的经验,给出你关于创建无冲突的 RESTful 操作的解决方法建议,希望对你解决创建无冲突的 RESTful 操作有所启发或帮助;

我有一个简单的 API 来处理房间内的物理座位分配。

每个座位都是以下资源:

{
  "person_name": "jermIE" // Person sitTing in the seat
  "available": false // Seat is currently allocated
  "seat_ID": 1111 // Unique seat IDentifIEr
}
  • 获得所有座位意味着GET /API/seats
  • 接收座位状态(谁坐在上面) - GET /API/seats/<seat_ID>
  • 创建新座位 - POST /API/seat
  • 移除座位 - deletE /API/seat/<seat_ID>
  • @H_301_25@

    如何创建一个 REST API 为用户分配一个空座位?

    我可以使用 GET /API/seats?available=True&count=1 返回一个空座位 (1234),并将其分配 - PUT /API/seats/1234,正文为 {"available": false,"person_name": RobbIE}

    这种方法的问题是我有大量的请求。两个人同时搜索空座位,会导致同一个座位被分配两次。

    我可以尝试 POST /API/seats/1234/assign 并返http 409 CONFliCT(如果它已经分配),但这会导致许多冲突的发生,很快就会有足够多的客户端相互竞争,一遍又一遍地尝试。

    另一个选项是使用 POST /API/assignSeat。然而,这种方法不是 RESTful。

    这是一个非常简单的问题,我可能不是第一个遇到它,但是“HATEOAS”和我在此过程中遇到的许多其他术语实际上并没有给出解决方案。这对我和其他人的理解非常重要。

    我是否可以在遵循 REST 原则的同时创建这样的 API?

    解决方法

    这听起来像你解释“REST = CRUD”。我认为这是一个有用的模式,也是 REST api 的一个很好的默认设置。

    但是,在某些情况下,此默认设置效果不佳。您所描述的情况听起来像是其中一种情况。

    因此,对于这种特定情况,拥有一个与 POST 一起使用的特殊的类似 RPC 的端点对我来说是一个很好的架构。它也不是严格意义上的非 RESTful。

    REST 描述了网络的工作方式,而 HTML 表单是网络的一个组成部分。许多 HATEOAS 格式都有描述这种“动作”的方法,而这些格式可能最接近 实际 REST 那么您可以获得。

大佬总结

以上是大佬教程为你收集整理的创建无冲突的 RESTful 操作全部内容,希望文章能够帮你解决创建无冲突的 RESTful 操作所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:操作