Отправка 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, есть несколько общих моментов, о которых следует подумать:
Если это локальный регион или регион разработки, могу ли я использовать http, а не https, чтобы я мог просматривать вещи как обычный текст во время отладки.
Для продуктов Enterprise Integrator есть функция тестирования конечных точек в консоли администратора. Это часто может быть полезно для обеспечения связи. Это похоже на простой пинг.
.Проверьте внутри trace.log, чтобы увидеть, есть ли там что-нибудь полезное для вас.
Для APIM используйте функцию Test a REST API, чтобы опробовать бэкэнд и посмотреть, работает ли он, прежде чем входить в парадную дверь сервера.
Для продуктов WSO2, если просмотр журналов не дает достаточно информации, вы можете использовать Wirelogs для просмотра каждой части информации, которая поступает на сервер WSO2 и уходит с него. По формату они примерно похожи на журналы Wireshark, но вывод находится внутри файла wso2carbon.log. Ключевым моментом здесь является привыкание к >> и <<, чтобы определить, идет ли запись журнала из сервера WSO2 или в него.
Если вы все еще не можете найти проблему, то, возможно, вам придется перейти к просмотру данных, проходящих через провод. Поначалу это немного сложно, но вы быстро освоитесь. (Подсказка: Это очень полезно для устранения неполадок в коммуникации 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. И вот вы уже видите все, что прошло по проводу. Получив это, вы можете начать видеть, в какой момент происходит поломка.
Заключение
Если вы достаточно приблизитесь в своем исследовании, то в конце концов найдете место поломки.