【问题标题】:How to name REST API endpoints for very especific features?如何为非常特定的功能命名 REST API 端点?
【发布时间】:2021-05-11 16:35:23
【问题描述】:

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

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

POST '/cars' // To create a Car

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

【问题讨论】:

    标签: rest naming-conventions endpoint restful-url


    【解决方案1】:

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

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

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

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

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

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

    但也可以将“停车票”资源添加到您的资源模型中,并使用不同的票来跟踪每辆车的到达和离开。

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

    【讨论】:

      【解决方案2】:

      我会这样做:

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

      【讨论】:

        猜你喜欢
        • 2021-07-01
        • 2017-01-14
        • 1970-01-01
        • 1970-01-01
        • 2021-05-25
        • 2020-08-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多