RESTful Route - 最佳实践

时间:2018-01-30 20:08:48

标签: rest api routes

希望是一个简单的问题:

如果我有一个可以出租车的情况,我会用哪条路线来查看汽车的预订:

/预订/汽车/:carID

或者

/汽车/:carID /预订

我可以看到它们是如何工作的,但哪一种更好,因为预订它应该是通过预订终点而不是汽车终点。

我认为通过导航到Car端点然后进入预订会更好。

1 个答案:

答案 0 :(得分:3)

正确的选择是:/cars/:carID/bookings

以下是文章的引用(使用您的示例)RESTful API Designing guidelines — The best practices,原因如下:

  

[...]如果我们在资源下拥有资源,例如汽车预订,   那么一些示例API端点将是:

     
      
  • GET /cars/3/bookings应该会获得所有预订汽车3的列表
  •   
  • GET /cars/3/bookings/45应该获得预订45的详细信息,该信息属于car 3
  •   
  • DELETE /cars/3/bookings/45应删除预订45,属于car 3
  •   
  • POST /cars/3/bookings/应为汽车3创建新的预订并返回新预订的详细信息
  •   

这是另一篇关于RPC和RESTful服务之间差异的精彩文章,它也有很好的例子:Understanding RPC Vs REST For HTTP APIs

以下是该文章的结论(文章的主要部分中引用的内容太多了):

  

一个简单的经验法则是:

     
      
  • 如果API主要是动作,也许它应该是RPC。
  •   
  • 如果API主要是CRUD并且正在操纵相关数据,那么它可能应该是REST。
  •   
     

如果两者都不是明显的赢家怎么办?你选择哪种方法?

     

同时使用REST和RPC链接

     

您需要选择一种方法并且只有一个API的想法是   有点虚伪。应用程序很容易有多个   API或其他服务不被视为" main" API。   使用任何公开HTTP端点的API或服务,您都拥有   遵循REST或RPC规则之间的选择,也许你愿意   有一个REST API和一些RPC服务。

  

了解REST和RPC之间的差异非常有用   当你计划一个新的API,它可以真正帮助你   致力于现有API的功能。最好不要混合风格   一个API,因为这可能会让消费者感到困惑   您的API以及期望一组约定的任何工具   (例如,REST),当它看到一个时,它就会倒下   不同的约定集(RPC)。在有意义的时候使用REST,或者   如果更合适,请使用RPC。或者使用两者并充分利用   两个世界!