Проблемы с отправкой JSON на сервер Node / Express из Axios / React - PullRequest
1 голос
/ 17 октября 2019

В настоящее время я работаю над веб-приложением, использующим Node.js с Express в фоновом режиме и React.js в интерфейсном. При попытке отправить пользовательские данные на сервер Node через axios я столкнулся с проблемой. Когда я создаю сообщение с типом содержимого x-www-form-urlencoded, внешний интерфейс отправляет сообщение на сервер, но весь JSON опубликованных данных появляется в ключевом поле первого элемента. Когда я меняю тип контента на json, он перестает публиковать что-либо из внешнего интерфейса. Я попытался подключиться к серверу, и керлинг JSON-сообщения будет принят сервером.

Введите код для отправки на сервер

handleSubmit()
  {
    var form=this;
    var axiosConfig = {
      headers: {
        'content-type': 'application/json; charset=utf-8'
      }
    }

    axios.post('http://localhost:8080/api/login/', {
      'username': form.state.username,
      'password': form.state.password
    }, {headers: {'content-type': 'application/json'}});

  };

Код сервера для конечной точки API

//From server.js
const express=require('express');
const session=require('express-session');
const bodyParser=require("body-parser");
const path = require('path');

var login = require('./routers/login')

var port = process.env.PORT || 8080;
var app=express();

app.use(session({'secret': 'thealphabetbackwardsiszyxwvutsrqponmlkjihgfedcba'}));
app.use(bodyParser.urlencoded({ extended: true}));
app.use(bodyParser.json());

//...

app.use('/api/login', login);

//from login.js
/* Router for login system
   When user attempts to log in, check their credentials
   If the user successfully logs in, create a session
   If user enters invalid credentials prompt them
*/

const path = require('path');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
const user = require("./../models/UserSchema")
mongoose.connect('mongodb://localhost/newt');

const express = require('express');
const router = express.Router();

router.get('/', function (req, res)
{
  console.log("Test");
})

router.post('/', function(req, res)
{
  console.log(req.body);
  res.end();
})

// To create test user use path localhost:8080/api/login/testing
router.get('/test', function (req, res)
{
  var db = mongoose.connection;

  var test = new user({
    username: "joesephschomseph",
    email: "testUser@test.com",
    fname: "Joe",
    lname: "Schmoe"
})

test.save();

console.log("Created test user!");
});


module.exports = router

1 Ответ

1 голос
/ 17 октября 2019
  1. npm install - сохранить const body-parser
  2. в app.js включает const bodyparser = require ('body-parser');
  3. app.use(bodyparser.urlencoded({ extended: false }));
    app.use(bodyparser.json());
    
  4. удалить одинарные кавычки из вашего имени пользователя и пароля

  5. console.log (req.body);
...