![](/img/trans.png)
[英]How can I make put and delete requests from a form using node.js and express.js?
[英]Express JS unable to PUT/DELETE
項目結構
.app.js
.routes/
....resources.js
我正在運行以下服務器實例:
app.js
"use strict";
const app = require('express')();
const resources = require('./routes/resources');
app.use('/', resources);
const server = app.listen('3000', () => {
let host = server.address().address;
host = (host == '::' ? 'localhost' : host);
const port = server.address().port;
// log it
console.log('listening at http://%s:%s', host, port);
});
我有GET和POST請求正常工作(routes / resources.js),即
"use strict"
const express = require('express');
const router = express.Router();
const bodyParser = require('body-parser');
//parser
router.use(bodyParser.json()); // for parsing application/json
router.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded
// data
let resources = [{
id: 1,
name: 'Foo'
}];
// POST
router.post('/resources', (req, res) => {
let item = req.body;
//send status
if (!item.id) {
return res.sendStatus(500);
}
// saved as a string, id must be int
item.id = parseInt(item.id, 10);
// add id
resources.push(item);
// send the response of new resource
res.send('/resources/' + parseInt(item.id, 10));
});
使用郵遞員,我可以成功發布,但是以下PUT和DELETE給了我Cannot DELETE / resources /消息:
// PUT
router.put('/resources/:id', (req, res) => {
// get id from request
let id = parseInt(req.body.id, 10);
// find existing id in resources
let existingItem = resources.filter(r => r.id === id)[0];
// if it doesn't exist
if(!existingItem) {
let item = req.body;
item.id = id;
resources.push(item);
res.setHeader('Location', '/resources/' + id);
res.sendStatus(201)
} else {
existingItem.name = req.body.name;
res.sendStatus(204);
}
});
// DELETE
router.delete('/resources/:id', (req, res) => {
let id = parseInt(req.body.id, 10);
let existingItem = resources.filter(r => r.id === id)[0];
if (!existingItem) {
return res.sendStatus(404)
}
resources = resources.filter(r => r.id !== id);
res.sendStatus(204)
});
盡管原因可能是答案盯着我,但還是想着為什么。 任何幫助,將不勝感激!
h,我給了DELETE和PUT路徑/:id參數
router.delete('/resources/:id...)
router.put('/resources/:id'...)
當我只是將DELETE / PUT請求指向POSTMAN中的'/ resources /時。
感謝@Molda的幫助-讓我意識到自己的錯誤!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.