【问题标题】:HTTP 406 error server response: when sending filtering params in requestHTTP 406 错误服务器响应:在请求中发送过滤参数时
【发布时间】:2015-11-30 11:31:20
【问题描述】:

我在 Backand 中有我正在构建的应用程序,并且我正在尝试使用过滤器参数。当使用$http 调用我的API 时,我在http 请求中得到406 error

这将是 API 调用,传递过滤器对象:

function getUserAttractions(userId) {

  return $http({

    method: 'GET',

    url: Backand.getApiUrl() + '/1/objects/attractions',

    params: {

      sort: [{
        "fieldName": "date",
        "order": "asc"
      }],

      filter: [{
        "fieldName": "user_id",
        "operand": "contains",
        "value": "1"
      }]

    }

  });

}

【问题讨论】:

  • 没有足够的信息 - 406 来自后端。因此,只需检查后端代码和日志 - 接收到的内容以及后端响应 406 的原因
  • 我认为您应该检查您的后端,并可能显示其中的一些代码(处理此请求的 API 方法)。

标签: javascript angularjs asp.net-web-api backend backand


【解决方案1】:

首先,您应该使用“运算符”而不是“操作数”。 如果 user_id 是一个对象字段,那么过滤器应该是:

filter: [{"fieldName":"user_id","operator":"in","value":"1"}]

在这里您可以找到其他类型字段的其他文档http://docs.backand.com/en/latest/apidocs/apidescription/index.html#rest-api-crud-operations

免责声明:我为 Backand 工作

【讨论】:

    【解决方案2】:

    HTTP 状态为 406(不可接受)时,服务器抱怨它无法满足您的请求,可能是因为您的(缺少)Accept 标头。见Wikipedia

    我不知道你的服务器应该发送什么,所以我假设它应该在响应中发送 JSON。

    尝试以下方法:

    return $http({
        method: 'GET',
        url: Backand.getApiUrl() + '/1/objects/attractions',
        headers: {
            'Accept': 'application/json, */*'
        },
        params: {
            sort: [{"fieldName":"date","order":"asc"}],
            filter: [{"fieldName":"user_id","operand":"contains","value":"1"}]
        }
    });
    

    请参阅AngularJS Page 了解更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-19
      • 1970-01-01
      • 2017-02-12
      • 1970-01-01
      • 1970-01-01
      • 2017-10-24
      相关资源
      最近更新 更多