限制Json模式中返回的字段

限制Json模式中返回的字段,json,rest,go,odata,Json,Rest,Go,Odata,我有一个要求,即允许客户端只从大型json模式请求字段的子集。我使用ODATA和他们的概念(我非常喜欢ODATA,除了缺乏采用)完成了这项工作,我知道我可以设计自己的解决方案,但我觉得必须有其他开源解决方案可以使用或用作基础。(我的服务正在进行中) 有人知道类似的事情吗?共同约定 补充一些澄清: 假设我有如下模式: { "status": { "enum": [ "active", "inactive" ]

我有一个要求,即允许客户端只从大型json模式请求字段的子集。我使用ODATA和他们的概念(我非常喜欢ODATA,除了缺乏采用)完成了这项工作,我知道我可以设计自己的解决方案,但我觉得必须有其他开源解决方案可以使用或用作基础。(我的服务正在进行中)

有人知道类似的事情吗?共同约定

补充一些澄清:

假设我有如下模式:

{ "status": { "enum": [ "active", "inactive" ] }, "lastModified": { "type": "string", "format": "date-time" }, "userId": { "type": "string", "minLength": 1 }, "username": { "type": "string", "minLength": 1 }, "firstName": { "type": "string", "minLength": 1 }, "lastName": { "type": "string", "minLength": 1 }, "email": { "type": "string" }, "address": { "$ref": "#/definitions/address" } } { "firstName": { "type": "string", "minLength": 1 }, "lastName": { "type": "string", "minLength": 1 }, "email": { "type": "string" } } { “地位”:{ “枚举”:[ “活动”, “非活动” ] }, “上次修改”:{ “类型”:“字符串”, “格式”:“日期时间” }, “用户ID”:{ “类型”:“字符串”, “最小长度”:1 }, “用户名”:{ “类型”:“字符串”, “最小长度”:1 }, “名字”:{ “类型”:“字符串”, “最小长度”:1 }, “姓氏”:{ “类型”:“字符串”, “最小长度”:1 }, “电子邮件”:{ “类型”:“字符串” }, “地址”:{ $ref:“#/定义/地址” } } 默认情况下,访问我们的用户资源将返回所有这些字段。我想让客户说他们只想要以下东西:

{ "status": { "enum": [ "active", "inactive" ] }, "lastModified": { "type": "string", "format": "date-time" }, "userId": { "type": "string", "minLength": 1 }, "username": { "type": "string", "minLength": 1 }, "firstName": { "type": "string", "minLength": 1 }, "lastName": { "type": "string", "minLength": 1 }, "email": { "type": "string" }, "address": { "$ref": "#/definitions/address" } } { "firstName": { "type": "string", "minLength": 1 }, "lastName": { "type": "string", "minLength": 1 }, "email": { "type": "string" } } { “名字”:{ “类型”:“字符串”, “最小长度”:1 }, “姓氏”:{ “类型”:“字符串”, “最小长度”:1 }, “电子邮件”:{ “类型”:“字符串” } }
使用Odata,您可以使用$select querystring参数指定它。理想情况下,我希望让客户机指定他们想要的模式,我们只需通过某种过滤器传递完整的模式,每次都会这样做。但是,我觉得这可能是我必须自己编写的代码。但是,在短期内,如果有一种方法可以让客户机以这种方式为每个请求指定他们想要的字段,那么在我们得到更健壮的字段之前,他们会感到满意。

如果我正确理解了您的问题,您希望显示客户机特定的字段。 如果是这样的话,你可以这样用

type FileMD struct {
FileName string `json:"filename"`
FileSize int    `json:"filesize"`
FileMD5  string **`json:"-"`**//this wil ignore the FileMD5 field

}

是否允许使用特定于客户端的字段而忽略其余字段?不完全允许,但关闭。请参阅上面我添加的详细信息。非常感谢。我以前没有用过这个,但是你可以用它来验证你的json