我有以下实体:
<car>
<carID>7</carID>
<...>...</...>
<externalCarID>23890212</externalCarID>
</car>
现在的问题是,
carID
和externalCarID
都是供不同系统使用/用于不同系统的独立主键,并且API客户端应该可以同时使用car
x和carID
访问externalCarID
实体。这两个键都是整数,并且它们而不是使用不交集:
carID(7) != externalCarID(7)
我想到了以下解决方案:
/restapi/car/7
和/restapi/externalcar/23890212
访问它/restapi/car/7?type=regular
和/restapi/car/23890212?type=ext
一些技巧来解决这个问题或对我的解决方案提供反馈,最好引用REST/HTTP规范,这将是很棒的!
有关主键的背景:
假设我们的发票系统需要
carID
,而我们的母公司控制系统则需要externalCarID
。我一点都不喜欢它,但是它是一个正在运行的系统,我现在没有办法对其进行更改。 最佳答案
我建议您选择一个ID作为“真正的主要对象”,并按照建议进行访问:
/restapi/car/7
如果您控制其中一个ID,那么我建议将其用作“真正的主要对象”。
另一个ID,即使它是唯一的标识符,也应该使用查询参数进行访问:
/restapi/car?extid=23384
有一些类似的问题可能会有所帮助:
REST API DESIGN - Getting a resource through REST with different parameters but same url pattern
Different RESTful representations of the same resource
最后要考虑的一件事是将“extid”的URL重定向到该资源的规范URL。
关于rest - 具有两个独立主键的实体的RESTful API行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26799460/