如何为非常具体的功能命名 REST API 端点?

How to name REST API endpoints for very especific features?

所以,我正在构建一个 RESTful API,就像一个停车系统,它有 ParkingLots 和进出 ParkingLots 的汽车,此刻,我的端点看起来像这样。

POST '/parking-lots' // To create a ParkingLot

POST '/cars' // To create a Car

但是,如何根据 REST 最佳实践命名具有 EnterParkingLot 或 LeaveParkingLot 功能的端点?到目前为止,我没有找到一篇文章或博客 post 来回答这个问题。

我会这样做:

POST '/parking-lot/$n/enter'
POST '/parking-lot/$n/leave'

But, how to name an endpoint that has EnterParkingLot or LeaveParkingLot feature following REST best pratices? I didn't found an article or blog post that answer this question so far.

REST 中信息的关键抽象是 resource。资源是文档的概括,而不是端点。

有用的工作是编辑文档的副作用 (Webber, 2011)。

如果您在确定 URI 时遇到问题,那可能意味着您对文档的思考还不够(也就是您还没有清楚地了解您的“资源模型”)。

有时会有帮助的一个想法是考虑具有缓存文档的客户端。当他们向您发送这些消息之一时,缓存中的哪个文档对 invalidate 最重要?

在 REST 中,让一个资源处理多种不同类型的编辑是正常的(不一定常见)。例如,我们可能会提交一个 EnterParkingLot form 来更新停车场资源,然后再提交一个 LeaveParkingLot 表单来更新 same 停车场大量资源(服务器上的代码解析请求以区分不同类型的编辑)。

但是向您的资源模型添加“停车票”资源也很好,用不同的票跟踪每辆车的到达和离开。

领域专家通常擅长告诉您文档是什么,以及什么名称有意义。