题
我有一个服务与某些实体,我想让在一个宁静的方式。由于一些要求,我有一些麻烦找到一种方法,我发现很好。
这些都是'正常的'操作,我打算支持:
GET /rest/entity[?filter=<query>] # Return (matching) entities. The filter is optional and just a convenience for us CLI curl-users :)
GET /rest/entity/<id> # Return specific entity
POST /rest/entity # Creates one or more new entities
PUT /rest/entity/<id> # Updates specific entity
PUT /rest/entity # Updates many entities (json-dict or multipart. Haven't decided yet)
DELETE /rest/entity/<id> # Deletes specific entity
DELETE /rest/entity # Deletes all entities (dangerous but very useful to us :)
现在,附加要求:
我们需要能够更换整个设定的实体有一套全新的实体(合并可能会发生内部为优化)。
我以为使用
POST /rest/entity
但是,将删除的能力,以创建单一的实体,除非我移动功能。我看见/休息/实体/新式途径在其他地方,但它似乎总是有点奇怪重用id路段,如有可能或可能不是一个碰撞在Id(不在我的情况,但是混合的名字空间那样给我一个痒:)是否有任何共同的做法对于这种类型的行动?我也认为
/rest/import/entity
作为一个独立的路径类似的非宁静操作的其他实体类型的我们可能有,但我不喜欢移动以外的实体回家的路径。我们需要能够执行大多数业务中的一个"干"运行模式进行验证。
查询串通常被认为是诅咒,但我已经是个罪人的过滤器中的一种。为验证的模式,将增加一个
?validate
或?dryrun
标志可以确定吗?有任何人做过任何相似?有什么缺点?这意味着辅助作用的面向用户的接口,以实现验证很容易。
我们不希望有使用任何缓存机制,因为这是一个微小的结构服务很少触,以优化用于缓存不是严格必要的
解决方案
我们需要能够更换整个设定的实体 全新的entitiescompletely新设置的实体
这是这是什么做的,不是吗?
PUT /rest/entity
把具有替代语义。也许你可以使用的补丁的动词来支持这样做局部更新。
就个人而言,我会改变资源名为"EntityList"或"EntityCollection",但这只是因为它更加清晰对我来说。
不隶属于 StackOverflow