我正在寻找关于为标准GET / PUT / POST / DELETE方法定义合同的意见。
我们有资源,让我们说客户,所以路由将是/ clients
但是,我们有两种类型的客户端ID。一个是我们的系统生成的ID。最重要的是,我们希望允许客户使用由客户自己生成的外部ID。
因此,如果客户永远不会将客户端添加到系统中,那么对集成并不感兴趣,并且只需要使用方法GET来读取客户,端点将是:
/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"这种方法。有什么意见吗?你会选择什么?为什么?
答案 0 :(得分:0)
REST没有提及URL。
内部和外部客户有何不同?如果唯一的区别是存在externalId
属性,只需使用/clients
端点并将该属性添加到客户端资源。始终在API中分配和使用内部ID属性,但也允许查询按客户提供的外部ID进行过滤。
答案 1 :(得分:0)
这个怎么样:
/clients/client_id/1 - for automatically generated ids
/clients/external_id/d23sa - for filtering on the external_id field
这可以扩展为一般过滤资源的任何字段,是我公司用于开发SlashDB的方法。