只读派生的REST资源?

时间:2017-07-11 05:55:23

标签: rest api restful-url

我正在创建一个新服务,我需要在两个实体上支持标记。 我是否可以将/tags创建为仅支持以下调用的顶级REST资源:

GET    /tags

GET    /tags/{tagName}

要应用标记,我们使用以下调用:

PATCH    /entity1/{entity_1_Name}

PATCH    /entity2/{entity_2_Name}

因此,无论何时将标记应用于实体,对GET /tags的后续调用都会显示该标记。我打算这样做,因为这不要求我在我的数据存储中独立存储标签。

这是个好主意吗?

1 个答案:

答案 0 :(得分:1)

  

我可以创建/标记为顶级REST资源

是的,你可以。如果tag是一个独立实体并且api响应仅包含tag_name和其他标记相关信息,那听起来很有意义。如果你的api有一个数据库或web.config,或者它处理硬编码的值列表,这没关系。无论如何,您的API接口隐藏这一事实,用户永远不会知道实施的细节。拥有一个只读实体是可以的。

  

每当标记应用于实体时,后续对GET /标记的调用都将显示该标记

我希望GET /entity2/{entity_2_Name}的资源模型有一个tags字段:

class Entity2
{
    string entity_name;
    ...
    string[] tags
}

作为替代,您可以通过两次调用获取所有数据:

GET /entity2/{entity_2_Name} //在回复中没有标记数组

GET /entity2/{entity_2_Name}/tags

资源/entity2/{entity_2_Name}/tags应返回分配给此具体entity2实例

的标记