Axios получить запрос не будет работать, но отправлять запрос? - PullRequest
0 голосов
/ 04 октября 2019
import React, { Component } from "react";
import axios from 'axios';

class App extends Component {



  handleSubmit(event) {
    axios.get('http://localhost:3050/login', {
      "username": "username",
      "password": "password"
    })
      .then(function (response) {
        console.log(response);
      })
      .catch(function (error) {
        console.log(error);
      });
    event.preventDefault();
  }

  render() {

      return(

        <form onSubmit={this.handleSubmit}>
          <input type="submit" value="Submit" />
        </form>

      );
  }

}

export default App;

В почтальоне, учитывая запрос GET и этот ввод json, я получаю ниже, как хотел

{
    "username": "username",
    "password": "password"
}

Тело ответа - 200 OK и возвращает

{ 
    "friends": 0,
    "id": "555"
}

Iполучить эту ошибку, когда я нажму "отправить" при реакции, хотя

Error: Request failed with status code 400
    at createError (createError.js:17)
    at settle (settle.js:19)
    at XMLHttpRequest.handleLoad (xhr.js:60)

Если бы я изменил свой бэкэнд на POST и вместо этого отправил axios.post, он бы работал. Я не могу понять это. Кто-нибудь знает? Есть ли что-то другое, что вы должны сделать, чтобы отправить запрос на получение с помощью axios?

Ответы [ 4 ]

1 голос
/ 04 октября 2019

Как вы отправляете JSON в GET запросе. В GET вы можете отправлять значения либо в пути, либо в параметрах запроса. Если вы отправите в тело, то это не будет работать. Лучше всего, если вы хотите что-то отправить, тогда используйте вызов POST вместо GET.

0 голосов
/ 04 октября 2019

Привет, попробуйте сделать это с помощью jsonplaceholder и выберите в заголовке Json :) И на стороне сервера console.log(req.body) И для завершения сделайте const body = username, passport Состояние Frome

0 голосов
/ 04 октября 2019

Вы делаете запрос на получение axios. Есть два способа передать параметры в ваш запрос

axios.get('http://localhost:3050/login?username='username'&password='password')
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });

или вы можете передать параметры, подобные этому

axios.get('http://localhost:3050/login', {
  params: {
   username: "username",
   password: "password"
   }
})
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });

Ссылка: Axios Надеюсь, это поможет

0 голосов
/ 04 октября 2019

Если вы хотите добавить параметры строки запроса в ваши запросы get, вам нужно вызвать axios следующим образом:

axios.get("http://localhost:3050/login", {
  "params": {
    "username": "username",
    "password": "password"
  }
})

Обратите внимание, что axios.get и axios.post принимают разные параметры:

  • axios.get(url[, config])
  • axios.post(url[, data[, config]])

Нельзя использовать .get и .post взаимозаменяемо с одинаковыми параметрами.

API, который вы используете, может также не принимать имя пользователя и пароль через GET API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...