REST使用外部ID创建资源

时间:2016-08-02 11:42:00

标签: rest post http-post

我正在构建一个微服务,其目标是管理实体的特定数据方面。还有另一个微服务为该实体管理(创建和保存基本数据)。

我希望在我的新微服务中访问一个实体将使用与其他服务相同的ID来完成,这样所有其他需要访问新服务的微服务都可以使用“实体ID”来实现。 。

因此,当我在新服务中创建(或第一次设置)资源时,我需要已经收到其“外部ID”。它是“RESTful”(足够)接收该ID作为POST URL的一部分,还是我必须省略ID并将其设置为请求主体的一部分?

例如,我可以使用它来第一次创建/设置我服务中的对象:

POST http://domain:port/resource/:ExternalID 

2 个答案:

答案 0 :(得分:0)

您可以在实体和查找机制中简单地引入一个可设置的externalId字段。在服务内部,您仍然可以使用特定于存储的ID。例如,在SCIM中使用了这种方法。

要查找您的资源:

  • /myresources?externalId=ABC返回收集资源
  • /myresources/search/findByExternalId?externalId=ABC可以返回 单一资源

答案 1 :(得分:0)

是的,这足够RESTful了:)

只要ExternalID是唯一的,那么可以用作资源标识符。您可以选择内部使用它作为主键还是将其存储为另一个属性。

通常,通过对http://domain:port/resource端点的POST可以创建您的资源并为其指定ID。

根据HTTP RFC,PUT请求可以用作upsert:

PUT方法要求目标资源的状态为 已创建或替换

所以也许这将更适合您的工作。