Rest HTTP GET上的部分对象
我们收集了以下文件:Rest HTTP GET上的部分对象,rest,api,architecture,Rest,Api,Architecture,我们收集了以下文件: class Document { id; title; someContent; creator; ... } 需要实现RESTAPI,在第一种情况下,返回所有字段(“id”、“title”、“someContent”等)的所有文档。 在第二种情况下,返回所有文档,但只返回部分字段(仅返回“id”和“title”) 哪种方法最好?使用查询参数“field”在一个端点中实现它是一个好主意吗?还是将它们分离到不同的端点更好? 我也可以使用206状态码吗? 是否有实现此功能的“
class Document {
id;
title;
someContent;
creator;
...
}
需要实现RESTAPI,在第一种情况下,返回所有字段(“id”、“title”、“someContent”等)的所有文档。
在第二种情况下,返回所有文档,但只返回部分字段(仅返回“id”和“title”)
哪种方法最好?使用查询参数“field”在一个端点中实现它是一个好主意吗?还是将它们分离到不同的端点更好?
我也可以使用206状态码吗?
是否有实现此功能的“最佳实践”
例如,我可以这样做(但我不确定这是否正确):
因此,“field”是可选的查询参数,它只指示我们需要返回的字段
在first Get中,将返回所有字段。例如:[{id:“5F1AB3”,标题:“文档1”,创建者:“John”,…},{…}]
。
在第二个示例中,JSON只包含两个字段:ID和title。响应看起来是这样的:[{id:“5F1AB3”,标题:“document1”},{…}]
哪种方法最好
您可能需要两种不同的资源,就像全尺寸图像和缩略图是不同的资源一样
如果它们是不同的资源,那么我们应该看到两个不同的标识符
请注意,这正是作为客户机,如果您试图为资源添加书签或与其他人共享书签,您所希望的
GET /documents
GET /documents?field=id&field=title
这些标识符很好。REST很少关心用于区分一个标识符和另一个标识符的拼写约定。请注意,查询是标识符的一部分——就通用组件而言,这是两个不同的标识符,这两个资源可能根本不相关
这不是一个好主意;206
的语义被耦合到,这不适合您正在做的事情
GET /documents
GET /documents?field=id&field=title