RESTFull API命名标准

  • 本文关键字:标准 API RESTFull rest
  • 更新时间 :
  • 英文 :


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

getEmployee
deleteEmployee
changeEmployeeLocation
enableDisableEmployee

但在REST中,我们通常通过主实体和HTTP方法来控制名称。这对于CURD操作来说非常棒。我不确定像changeEmployeeLocation这样的端点将如何根据REST命名标准进行命名

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

谢谢!

在RESTfully API中,正如您猜对的那样,动词是通过HTTP方法隐含的。概念上的区别在于,与SOAP不同,您不使用REST调用方法。您只修改资源。因此,您需要将像enableDisableEmployee这样的SOAP方法调用反汇编为正确的资源有效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允许您发送一个不完整的资源,该资源应与现有资源合并。

最新更新