【问题标题】:RESTFull API Naming StandardsRESTFul API 命名标准
【发布时间】:2018-04-13 16:35:36
【问题描述】:

我们正在设计 Rest API。但是我对端点命名约定有点困惑。根据我的理解,SOAP 标准允许服务端点名称为 verb + noun 例如

getEmployee
deleteEmployee
changeEmployeeLocation
enableDisableEmployee

但在 REST 中,我们一般通过主实体和 HTTP 方法来控制名称。这对于 CURD 操作非常有用。我不确定如何根据 REST 命名标准命名 changeEmployeeLocation 等端点

getEmployee (SOAP) -> /employee (REST - GET HTTP Method)
deleteEmployee (SOAP) -> /employee (REST - DELETE Method)
changeEmployeeLocation (SOAP) -> ???
enableDisableEmployee (SOAP) -> ???

谢谢!

【问题讨论】:

    标签: rest


    【解决方案1】:

    在 RESTfully API 中,正如您猜对的那样,动词是通过 HTTP 方法隐含的。概念上的区别在于,与 SOAP 不同,您不使用 REST 调用方法。您只修改资源。因此,您需要将 SOAP 方法调用(如 enableDisableEmployee)分解为正确的资源有效 URL。

    createEmployee (SOAP) -> POST /employees
    getEmployee (SOAP) ->  GET /employees/1
    deleteEmployee (SOAP) -> DELETE /employees/1
    

    要更新资源的单个属性,我们有两种选择:

    PUT
    
    changeEmployeeLocation (SOAP) -> PUT employees/1/location requestbody->{location:new location}
    enableDisableEmployee (SOAP) -> PUT employees/1/enabled requestbody->{enabled:true}
    

    使用特定的 URL 确实有效,但它是非常静态的。因此最好使用PATCH

    PATCH
    
    changeEmployeeLocation (SOAP) -> PATCH employees/1 requestbody->{location:new location}
    enableDisableEmployee (SOAP) -> PATCH employees/1 requestbody->{enabled:true}
    

    PATCH 允许您发送不完整的资源,该资源预计会与现有资源合并。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-12
      • 2014-07-25
      • 1970-01-01
      • 1970-01-01
      • 2015-07-11
      • 1970-01-01
      相关资源
      最近更新 更多