RESTFull API命名标准

时间:2017-08-29 10:33:27

标签: rest

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

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) -> ???

谢谢!

1 个答案:

答案 0 :(得分:1)

在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允许您发送不完整的资源,预计该资源将与现有资源合并。