Отправка POST-запроса в wso2 api manager 4.1.0

Я хочу отправить POST запрос с телом в WSO2. на самом деле у меня есть django rest frame work с некоторыми API и я хочу отправлять запросы в wso2 api manager. все в порядке для GET, DELETE, но когда я хочу POST запрос я получаю плохой запрос от сервера django.
django server is running on : http://localhost:8000/user-api/users/
. в wso2 api publisher api's URL is : http://localhost:8243/users/1.0.0
. конечная точка в wso2: http://localhost:8000/user-api/users/

ниже показано, что я получаю, когда отправляю GET запрос:
ответ на GET запрос

Я отправляю POST запрос с этим json в качестве тела:
post request's json
и вот что я получаю, когда отправляю POST запрос:
ответ сервера на POST запрос

все в порядке, когда я проверяю url сервера в браузере.

извините за мой плохой английский. спасибо за вашу помощь.

Ведет ли он себя как-то иначе, когда этот API вызывается напрямую с помощью cURL или Postman?

Я не совсем понимаю, о чем на самом деле спрашивается в этом вопросе. Но мне кажется, что в целом это вопрос о том, как отладить эту ситуацию. Прошу прощения, если я понял неправильно.

Чтобы начать отладку проблемы с сервером WSO2, есть несколько общих моментов, о которых следует подумать:

  1. Если это локальный регион или регион разработки, могу ли я использовать http, а не https, чтобы я мог просматривать вещи как обычный текст во время отладки.

  2. Для продуктов Enterprise Integrator есть функция тестирования конечных точек в консоли администратора. Это часто может быть полезно для обеспечения связи. Это похоже на простой пинг.

    .
  3. Проверьте внутри trace.log, чтобы увидеть, есть ли там что-нибудь полезное для вас.

  4. Для APIM используйте функцию Test a REST API, чтобы опробовать бэкэнд и посмотреть, работает ли он, прежде чем входить в парадную дверь сервера.

  5. Для продуктов WSO2, если просмотр журналов не дает достаточно информации, вы можете использовать Wirelogs для просмотра каждой части информации, которая поступает на сервер WSO2 и уходит с него. По формату они примерно похожи на журналы Wireshark, но вывод находится внутри файла wso2carbon.log. Ключевым моментом здесь является привыкание к >> и <<, чтобы определить, идет ли запись журнала из сервера WSO2 или в него.

  6. Если вы все еще не можете найти проблему, то, возможно, вам придется перейти к просмотру данных, проходящих через провод. Поначалу это немного сложно, но вы быстро освоитесь. (Подсказка: Это очень полезно для устранения неполадок в коммуникации JMS.)

    .

В linux вы можете использовать tcpdump для записи данных в файл, а затем открыть его с помощью Wireshark. В Windows есть аналогичная система.

Для tcpdump необходимо использовать имя интерфейса. Часто оно выглядит как eth0. Вы можете найти его с помощью ifconfig. Это значение: перед флагами.

Пример захвата tcpdump:

tcpdump -s 0 -I {interfacename} -W 30 -C 50 -w wsoei-01-07192022.pcap -Z root
tcpdump -s 0 -i ens192 -W 30 -C 50 -w wsoei-01-07192022.pcap -Z root

После захвата pcap-файла откройте его с помощью Wireshark. И вот вы уже видите все, что прошло по проводу. Получив это, вы можете начать видеть, в какой момент происходит поломка.

Заключение

Если вы достаточно приблизитесь в своем исследовании, то в конце концов найдете место поломки.

Вернуться на верх