Как мне отформатировать данные POST для тестирования конечной точки экспресс-API?

Я следую: https://www.digitalocean.com/community/tutorials/getting-started-with-the-mern-stack.

Я хотел бы протестировать конечную точку API, созданную с помощью экспресс. Я хотел бы проверить POST.

Сервер узла работает, и я использую почтальона, чтобы проверить, работает ли конечная точка.

Я не понимаю, как форматировать данные сообщения, и мои запросы POST приводят к ошибкам при их отправке.

Мой API ниже:

const express = require ('express');
const router = express.Router();
const Todo = require('../models/todo');

router.get('/todos', (req, res, next) => {

  //this will return all the data, exposing only the id and action field to the client
  Todo.find({}, 'action')
    .then(data => res.json(data))
    .catch(next)
});

router.post('/todos', (req, res, next) => {
  if(req.body.action){
    Todo.create(req.body)
      .then(data => res.json(data))
      .catch(next)
  }else {
    res.json({
      error: "The input field is empty"
    })
  }
});

router.delete('/todos/:id', (req, res, next) => {
  Todo.findOneAndDelete({"_id": req.params.id})
    .then(data => res.json(data))
    .catch(next)
})

module.exports = router;

Моя схема выглядит следующим образом:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

//create schema for todo
const TodoSchema = new Schema({
  action: {
    type: String,
    required: [true, 'The todo text field is required']
  }
})

//create model for todo
const Todo = mongoose.model('todo', TodoSchema);

module.exports = Todo;

В Postman мой URL-адрес — http://localhost:5000/api/todos, и я добавляю тело с ключом в качестве действия и значением в виде asdf. При отправке получаю следующий результат:

{
    "error": "The input field is empty"
}

Не могли бы вы сообщить мне, как отформатировать данные моего тела, чтобы я мог правильно проверить свою конечную точку POST?


person GoBlueDev    schedule 17.08.2020    source источник


Ответы (1)


  1. Откройте Postman, выберите запрос как POST и нажмите Body.

  2. В разделе «Тело» выберите необработанные данные и вставьте свои данные в пространство ниже, как показано ниже, и измените параметр с текста на параметр JSON: —

    { действие: asdf }

  3. Обязательно добавьте это в свой файл app.js перед любым обработчиком маршрута.

    константное приложение = экспресс(); app.use(express.json());

person Jatin Mehrotra    schedule 17.08.2020
comment
Конечно, я только что попробовал это. К сожалению, я получаю тот же ответ обратно. { ошибка: поле ввода пусто } - person GoBlueDev; 17.08.2020
comment
Мне жаль, что я пропустил одну вещь: когда вы выбираете raw, обязательно измените параметр с текста на JSON (вы можете увидеть это рядом с параметром GraphQl). Я обновил ответ, надеюсь, это поможет. - person Jatin Mehrotra; 17.08.2020
comment
Лучший способ протестировать внешний ресурс, такой как конечная точка, — это смоделировать его. Точно так же вы можете сначала отформатировать свои данные с помощью промежуточного программного обеспечения — как упоминает @JatinMehrotra, используя express.json() Тестирование конечной точки, которая использовала MongoDB — вы можете выбрать использование сервера MongoDB в памяти - person Hrishikesh D Kakkad; 21.11.2020