2014-09-21 3 views
0

Я использую Flask-Restless для создания моего API, который требует от параметров запроса отформатироваться с помощью списка объектов фильтра. Правильный запрос имеет следующий формат:

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

(см. Колба-беспокойных документы запрос here)

При использовании Угловое-х $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" 

Можно ли отключить кодировку для всех или некоторых параметров?

ответ

2

ОБНОВЛЕНО ОТВЕТ:

Угловые будет по умолчанию stringify значения Params, если он является объектом.
Таким образом, он будет делать все необходимые работы для вас, просто пропускания queryObject:

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

То, что вы видите, является строковым объектом закодирован в качестве компонента URI.

Это, вероятно, не сделано угловым, но вашим браузером.
(Например, попробуйте сделать простой XHR к тому же URL и насекомое запроса в панели сети Devtools.)

Я не знаком с Колбой, но (если он не будет автоматически декодировать параметры запроса) он должен иметь способ сделать это вручную.

+0

Даже после того, как stringifying сервер показывает запрос как GET/API/чел д =% 7B% 22filters% 22:% 7B% 22name% 22:% 22firstName% 22,% 22op% 22:% 22like% 22,% 22val% 22:% 22Mike% 22% 7D% 7D HTTP/1.1 " – Josh

+0

@Josh: На самом деле я ошибся, вам не нужно подстраивать себя. Это браузер, кодирующий параметр запроса как компонент URI. происходит с каждым запросом, и Flusk должен иметь возможность обрабатывать его. – gkalpak

+0

Спасибо @ExpertSystem, вы правы. Похоже, я просто сделал тупую ошибку, не обертывая мою строку поиска в %% при использовании оператора LIKE. – Josh

Смежные вопросы