有没有办法使用包含值,错误和警告字段的通用基本响应?

时间:2017-02-21 09:51:03

标签: json httpresponse onenote-api

因此,根据官方文档示例,OneNote的响应可能具有以下结构:

{
  value:{the content we requested},
  error:{error if exists with warnings inside if exist},
  @api.diagnostics:{warnings if exist}
}

但是,如果响应主体不包含JSON数组而是包含JSON Object,则响应将是以下

{
  Here would be entity, representing the content we requested
}

所以,接下来我的问题是:有没有办法统一OneNote API的响应,因为当前的响应结构违反了它的合同。

由于我有能力使用拦截器更改我的请求模块,因此输出看起来像我需要的,这似乎是一个肮脏的解决方法,所以我想看到关于这个问题的官方信息。

2 个答案:

答案 0 :(得分:1)

实际上,除了上面提到的一个肮脏的解决方法之外别无他法。要重构OneNote(和其他常见服务)API,应该实现拦截器或类似servlet的东西,这将传输所有未知属性,这似乎是新的根json属性的权限属性,使其类似到数据集合表示的响应格式。因此,除非重构API以匹配 良好风格 ,否则无法做任何事情。希望微软的某个人能够看到这一点,并对API实施为什么 要求客户端的服务器端工作

进行评论

答案 1 :(得分:0)

http://www.odata.org/getting-started/basic-tutorial/

OneNote API是一个OData API - 这意味着它符合OData标准,其中数组作为value属性的一部分返回。

当数组中的实体返回"值"属性:

{ value:[element1, element2, ...], }

特定实体不是

{ element1 }

通过使用odata有效负载的容器类,在任何支持泛型的语言中相对容易解决,例如:

class ODataPayload<T>{ Public IList<T> Values {get; set;} }

这样你就可以解析&#34; T&#34;当获得单个实体和获得多个时的ODataPayload时。

或者您也可以使用http://json2csharp.com/之类的东西来生成解析类。

请注意,错误仅会返回4xx ad 5xx状态代码。任何2xx状态代码都应该为您提供实体。