我有以下实体:

<car>
    <carID>7</carID>
    <...>...</...>
    <externalCarID>23890212</externalCarID>
</car>

现在的问题是,carIDexternalCarID都是供不同系统使用/用于不同系统的独立主键,并且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
  • 将信息发送到 header 中的某个位置-,但是在哪里?

  • 一些技巧来解决这个问题或对我的解决方案提供反馈,最好引用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/

    10-15 14:31