Javascript - не может публиковать данные (используя аксиомы), пока работает в почтальоне. Почему?

Обновлено: По-видимому, ошибкой (в моем третьем примере) был знак "?" в http://example.herokuapp.com/api/v1/tickets? После того как удалил, работает :)

Я пытаюсь сделать почтовый запрос с помощью axios, и когда я делаю это в почтальоне, все работает нормально, но когда я делаю это в своем коде, я всегда получаю обратно 500 или 400.

В почтальоне мой (данные здесь примерные) мой URL:

http://example.herokuapp.com/api/v1/tickets?

в моем теле внутри почтальона:

pin: 123ABC,
ride_id: 24,
token: XXAAXXAAXX

Итак, в моем коде я все перепробовал.

первая попытка:

return axios.post("http://example.herokuapp.com/api/v1/tickets?pin = "123ABC"&ride_id=24&token=XXAAXXAAXX")

Здесь я получаю сообщение об ошибке: запрос завершился неудачно с кодом состояния 400.

2-я попытка:

return axios.post("http://example.herokuapp.com/api/v1/tickets?", {
 params: {
     pin: "123ABC",
     ride_id: 24,
     token: "XXAAXXAAXX"
 }

третья попытка:

return axios.post("http://example.herokuapp.com/api/v1/tickets?", {
  pin: "123ABC",
  ride_id: 24,
  token: "XXAAXXAAXX"
})

Любая помощь будет очень признательна !!!

Клиентский код, вызывающий axios.post, размещен на том же сервере heroku? (кстати, согласно документации, правильная 3-я версия)

Chris G 14.01.2019 20:45

Возможный дубликат Как разместить параметры запроса с помощью Axios?

zero298 14.01.2019 20:48

@ChrisG Я думаю, что вторая попытка с null между URL-адресом и объектом является правильным способом в соответствии с этим ответом: Как разместить параметры запроса с помощью Axios?. В противном случае данные отправляются как часть тела запроса, а не как параметры запроса.

zero298 14.01.2019 20:49

Насколько я могу судить, OP пытается отправить параметры POST, а не GET. Первая попытка была неудачной, но тест POSTMAN был правильным.

Chris G 14.01.2019 20:54

@ zero298 Я на самом деле также пробовал добавить нуль между URL-адресом и параметрами, но безуспешно

javascripting 14.01.2019 21:08

Вы сейчас тестируете почтовый запрос со своего веб-сайта локально, попадая на свой сервер heroku?

pengcheng95 14.01.2019 21:23

Третий способ правильный. Второй аргумент - это данные тела, как и предполагалось при запросе POST. Опять же: где размещен код реакции? На одном сервере? Как выглядит код сервера?

Chris G 14.01.2019 21:26
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
7
659
2

Ответы 2

какой язык используется в вашем бэкэнде?

если это php, помните, что для внешних запросов вы должны разместить

header("Access-Control-Allow-Origin: *");

Как указано в вопросе, OP использует heroku, то есть Node / JS.

Chris G 14.01.2019 20:56

Третий способ - это правильный способ использования почтового запроса с аксиомами. Параметры связаны с запросами на получение.

Причина, по которой ваши запросы работают в Postman, но не удается на веб-сайте, может быть ошибкой CORS. Вы можете увидеть, является ли это ошибкой CORS, посмотрев на вкладку своей сети, и вы увидите, что запрос, который не работает, является запросом OPTIONS. Он должен сказать что-то вроде

http://localhost:8080 is not allowed by Access-Control-Allow-Origin

Чтобы исправить это, вам нужно будет добавить несколько строк кода на свой сервер узла.

var cors = require('cors')
var app = express()

app.use(cors())

Вы можете больше узнать о cors здесь: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors и https://www.npmjs.com/package/cors

Другие вопросы по теме