我正在构建一个微服务,其目标是管理实体的特定数据方面。还有另一个微服务为该实体管理(创建和保存基本数据)。
我希望在我的新微服务中访问一个实体将使用与其他服务相同的ID来完成,这样所有其他需要访问新服务的微服务都可以使用“实体ID”来实现。 。
因此,当我在新服务中创建(或第一次设置)资源时,我需要已经收到其“外部ID”。它是“RESTful”(足够)接收该ID作为POST URL的一部分,还是我必须省略ID并将其设置为请求主体的一部分?
例如,我可以使用它来第一次创建/设置我服务中的对象:
POST http://domain:port/resource/:ExternalID
答案 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方法要求目标资源的状态为 已创建或替换
所以也许这将更适合您的工作。