0

我正在使用 Flask-Restless 创建我的 API,这需要使用过滤器对象列表来格式化查询参数。有效查询遵循以下格式:

/api/person?q={"filters":[{"name":"firstName","op":"like","val":"Mike"}]}

(请参阅此处的 Flask-Restless 查询文档。)

当我使用 Angular$http.get传递查询参数时,它们被编码在 URL 中并中断查询:

GET /api/person?q=%7B%22filters%22:%7B%22name%22:%22firstName%22,%22op%22:%22like%22,%22val%22:%22Mike%22%7D%7D HTTP/1.1"

是否可以禁用所有或部分参数的编码?

4

1 回答 1

2

更新答案:

如果它是一个对象,Angular 默认会将参数值字符串化。
因此,只需传递 queryObject,它就会为您完成所有必要的工作:

var queryObject = {filters: [...]};
$http.get('...', {params: {q: queryObject}});

您看到的是编码为 URI 组件的字符串化对象。

这可能不是由 Angular 完成的,而是由您的浏览器本身完成的。
(例如,尝试对相同的 URL 进行简单的 XHR 并在 DevTools 的 Network 面板中插入请求。)

我不熟悉 Flask,但是(如果它不自动解码查询参数)它应该有一种手动方法。

于 2014-09-21T13:49:49.893 回答