Rob*_*ert 5 rest restful-url restful-architecture
我有以下实体:
<car>
<carID>7</carID>
<...>...</...>
<externalCarID>23890212</externalCarID>
</car>
Run Code Online (Sandbox Code Playgroud)
现在的问题是,carID和externalCarID是用于通过/不同系统都独立主键,它应该是可能的API客户端访问一个car与两个实体carIDXOR的externalCarID。
这两个键都是整数,并且不使用不交集:
carID(7) != externalCarID(7)
Run Code Online (Sandbox Code Playgroud)
我想到了以下解决方案:
/restapi/car/7和访问/restapi/externalcar/23890212/restapi/car/7?type=regular和/restapi/car/23890212?type=ext一些技巧来解决这个问题或对我的解决方案提供反馈,最好参考REST / HTTP规范,这将是很棒的!
有关主键的背景:
假设我们的发票系统需要carID和母公司控制系统需要externalCarID。我一点都不喜欢它,但是它是一个正在运行的系统,我现在没有办法对其进行更改。
我建议您选择一个 ID 作为“真正的主要”,并按照建议访问它:
/restapi/car/7
Run Code Online (Sandbox Code Playgroud)
如果您控制其中一个 ID,那么我建议将其用作“真正的主要”。
另一个 ID,即使它是唯一标识符,也应该使用查询参数访问:
/restapi/car?extid=23384
Run Code Online (Sandbox Code Playgroud)
有一些类似的问题可能会有所帮助:
REST API 设计 - 通过 REST 获取具有不同参数但具有相同 url 模式的资源
最后要考虑的一件事是将“extid”的 url 重定向到该资源的规范 URL。
在提出的三个选项中,第一个对我来说看起来最好。特别是考虑到每个外部系统仅使用一个基本 URL。对于第二个选项,你也可以使用/restapi/car/?extid=23384看起来更干净的。在第三种情况下,在我看来,标头更适合元数据,因此使用它们不是为了管理表示上下文,而是为了完全更改 url 返回的对象,这不是一个干净的选择。就我个人而言,根据您的性能要求,我会选择第一个解决方案或常规解决方案,/rastapi/car/7因为id我会考虑系统中的主要解决方案和restapi/car/?extid=1234辅助唯一密钥,可能将 GET 重定向到规范网址(如果它不会影响性能)很多。
| 归档时间: |
|
| 查看次数: |
1800 次 |
| 最近记录: |