【问题标题】:Cannot PUT error in Node Express app在 Node Express 应用程序中无法 PUT 错误
【发布时间】:2017-07-24 02:01:48
【问题描述】:

我的getpost API 可以正常工作,但由于某种原因我的app.put 不能正常工作。

当我在PostMan 中以PUT 的形式点击localhost:3001/contacts/1 时,我什至看不到我的简单console.log:

app.put('/api/contacts:id', (req, res) => {
    console.log('req.params.id', req.params.id);
    res.json(contact);
});

app.put

app.put('/api/contacts:id', (req, res) => {
    console.log('req.params.id', req.params.id);
    res.json(contact);
});

完整的 server.js 代码

// Requires ////////////////////////////////////////////////////////////////////
const express = require('express');
const app = express();
const bodyParser = require('body-parser'); // req.body
const cors = require('cors');
const R = require('ramda');

// Variables ///////////////////////////////////////////////////////////////////
const hostname = 'localhost';
const port = 3001;
let contacts = require('./data');

// Logic ///////////////////////////////////////////////////////////////////////
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cors());

app.get('/api/contacts', (req, res) => {
    if (!contacts || R.isEmpty(contacts)) returnError(res, 'No Contacts found');
    res.json(contacts);
});

app.get('/api/contacts/:id', (req, res) => {
    const contact = contacts.filter(contact => contact.id == req.params.id);
    if (R.isEmpty(contact)) returnError(res, 'No Contact found');
    res.json(R.head(contact));
});

app.post('/api/contacts', (req, res) => {
    const contact = {
        id: contacts.length + 1,
        first_name: req.body.first_name,
        last_name: req.body.last_name,
        email: req.body.email,
        website: req.body.website
    }

    contacts.push(contact);

    res.json(contact);
});

app.put('/api/contacts:id', (req, res) => {
    console.log('req.params.id', req.params.id);
    // const contact = contacts.filter(contact => {
    //  return contact.id == req.params.id
    // })[0];

    // console.log('1 contact', contact);
    // const index = contacts.indexOf(contact);
    // const keys = Object.keys(req.body);
    // keys.forEach(key => {
    //  contact[key] = req.body[key];
    // });
    // console.log('2 contact', contact);
    // contacts[index] = contact;
    // console.log('contacts', contacts);
    // res.json(contacts[index]);
    res.json(contact);
});

const returnError = (res, msg) => res.status(404).json({ message: msg });

app.listen(port, hostname, () => {
    console.log(`server is running at http://${hostname}:${port}`);
});

【问题讨论】:

  • 这是错字吗? '/api/contacts:id' 应该是 '/api/contacts/:id'。如果是这样,则应关闭/删除该问题,因为它不会为未来的读者带来任何价值。

标签: javascript node.js express put


【解决方案1】:

这行好像有错字:

app.put('/api/contacts:id', (req, res) => {

添加一个“/”来阅读:

app.put('/api/contacts/:id', (req, res) => {

【讨论】:

    【解决方案2】:

    您的网址如下所示:

    app.put('/api/contacts:id', (req, res) => {, 
    

    但应该是这样的:

    app.put('/api/contacts/:id', (req, res) => {
    

    【讨论】:

      猜你喜欢
      • 2021-09-17
      • 1970-01-01
      • 2017-04-24
      • 1970-01-01
      • 2020-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多