2015-03-05 3 views
0

Я хотел бы использовать GET с текстом сообщения с помощью AmplifyJS.Amplifyjs Запрос GET с телом

Мой вопрос конкретно в том, как достичь этого с помощью AmplifyJS.

Синтетические тесты работают нормально (Fiddler является моим тестовым клиентом). Но когда я делаю это через AmplifyJS, «тело» добавляется в строку запроса. (Edit: Является ли это ограничение базового «Аякса» JQuery или это выбор AmplifyJS в)

amplify.request.define('trickyGet', 'ajax', { 
       url: 'entity/{param}', 
       dataType: 'json', 
       type: 'GET', 
       contentType: '???' 
      }); 

затем

amplify.request({ 
        resourceId: 'trickyGet', 
        data: { param: 'paramVal', data: JSON.stringify({'complex1': 'complex1Val'}) }, 
        //data: { param: 'paramVal', data: {'complex1': 'complex1Val'}) }, 
        success: callbacks.success, 
        error: callbacks.error 
       }); 

Я перепробовал все виды комбинаций с тем, как представляется мой комплекс данных и что content-type к использовать.

Если я меняю type на POST (и, конечно, измените точку доступа к API), все работает (data находится в теле сообщения). Но с get, data добавляется к строке запроса (по AplifyJS).

+0

Боюсь, вы не совсем понимаете HTTP. Вы не создаете тело запроса для HTTP GET. Органы запроса предназначены только для таких методов, как POST, PUT и PATCH. Для таких методов, как GET или DELETE, вы можете использовать строку запроса. –

+0

@CameronTinker, спасибо вам за помощь. На самом деле я сделал домашнюю работу, и на данный момент в спецификации HTTP, похоже, есть лазейка (возможно, намеренная), что на самом деле позволяет GET-запросам иметь тело. Очень легко google и найти на стеке - пожалуйста, проверьте. Тем не менее - это на самом деле не по теме. –

ответ

0

Усилитель.js использует метод jQuery ajax(), который в свою очередь ограничивает то, как data отправляется в течение get запросов.

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