RestFul webService和数据库事务


RestFul webService and Database Transactions

最近我正在与Rest架构作斗争:p并且我经常提出很多问题。假设我有一个名为"user"的资源,该用户可以有一个汽车列表。我试图在数据库中插入该用户和他的汽车列表一次。我知道我必须这样做POST HTTP动词。但我该如何做到这一点呢?我应该只发送一个带有用户标识和以某种方式编码的汽车列表的URL,还是应该使用"user"资源来插入用户,然后为每辆车调用名为"car"的资源中的POST URL ?

第二种方法有一个问题。这个过程必须通过数据库事务来实现。如果在插入汽车时出现问题,我希望用户不在数据库中注册。

我知道restFul架构必须是无状态的,那么我如何使用数据库功能实现这样的事务呢?我知道我可以自己实现某种交易,但我希望它更自动。

提前感谢。

根据您在前端和后端使用的语言以及您计划如何发送此数据,有许多方法可以做到这一点。我将这样解决问题,假设你正在使用PHP和MySQL:

  1. 准备好数据,所以像user=123&cars[]=1&cars[]=2&cars[]=3这样的东西(我使用var cars[],因为这会向PHP发送一个数组,你可以通过将输入字段命名为cars[]来实现这一点)
  2. Post this to your backend
  3. 你的后端将处理用户,并将他们添加到数据库,如果他们不存在。
  4. 然后我会有一个表来说明用户和汽车之间的关系,类似于:

    创建表box_to_categoryuser_id int(11) NOT NULL,car_id int(11) NOT NULL);

  5. 在这个表中,我将清除与该用户关联的所有汽车,然后将新汽车作为post添加到后端(user_id将与users表中的user相关联,car_id将与cars表中的car相关联)

设置很简单。