我正在创建一个新服务,我需要在两个实体上支持标记。
我是否可以将/tags
创建为仅支持以下调用的顶级REST资源:
GET /tags
GET /tags/{tagName}
要应用标记,我们使用以下调用:
PATCH /entity1/{entity_1_Name}
PATCH /entity2/{entity_2_Name}
因此,无论何时将标记应用于实体,对GET /tags
的后续调用都会显示该标记。我打算这样做,因为这不要求我在我的数据存储中独立存储标签。
这是个好主意吗?
答案 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
实例