我正在寻找关于为标准GET/PUT/POST/DELETE方法定义合同的意见。如何在RESTful服务中更好地指定ID
我们有资源,比方说客户端,所以路线将/客户
但是,我们有两种类型的ID的客户端。一个是我们的系统生成的ID。最重要的是,我们希望允许客户使用客户自己生成的外部标识。
所以,如果客户永远不会向客户添加到系统中,没有关于整合很感兴趣,并且只需要使用方法能读到客户,终点是:
/clients/{id}
但是,如果他们想要完全整合,有能力添加客户端,并使用一些他们的ID,我们希望给他们使用他们自己的ID的能力。
我们考虑了四种可能的解决方案:
1. /clients/external/{externaId}
2. /clients/ext-{externalId}
3. /clients/{externalId}?use-external-id=true
4. /clients/{externalId} with additional header -"use-external-id": true
我们偏向于选择3和4(可同时支持),但担忧这种做法的“restfulness”。对此有何意见?你会选择什么?为什么?
客户端是相同的,我们只是希望能够通过我们的系统生成的Id或由外部组件生成的id来找到它们。例如,客户端可以是: Id:1 Name:Maxim Alexeyev ExternalId:MA –
然后,如果我们选择第二种方法,我将能够通过url/clients/1或/ clients/ext-MA –
与DELETE命令相同 –