如何使用 experss.js 发送 PUT 请求

时间:2021-03-24 09:18:33

标签: javascript node.js express

我目前正在学习 node.js 我有一个关于 PUT 请求的问题

我可以创建对象 并在 URL 中看到它 但我不知道如何写一个编辑请求 例如改变车辆的价格? 我很想知道如何编写编辑请求

这是我的 HTML 代码

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>Add car to the storege</h1>
    <form action="/addCar" method="post">

    <label for="">Car model</label>
        <input name="car_model" type="text">
    <label for="">Color</label>
        <input name="color" type="text">
    <label for="">Engine capacity</label>
        <input name='Engine' type="number">
    <label for="">Price</label>
        <input name='price' type="number">
    <label for="">id</label>
        <input name='id' type="number">
    <input type="submit" value="Send">

    </form>
</body>
</html>


 const express = require('express')
const bodyParser = require('body-parser')
const app = express()
const port = 3002
const Joi = require('@hapi/joi');

app.use(bodyParser.urlencoded({ extended: true }))

let carStorege = []

app.post('/addCar', (req,res) => {
    const schema = Joi.object({
        car_model: Joi.string().required(),
        color: Joi.string().required(),
        Engine: Joi.number().required(),
        id: Joi.number().required(),
        price: Joi.number().required()
    })
    const validation = schema.validate(req.body)
    if(validation.error){
        res.send('something worng!')
    }
    carStorege.push(req.body)
    console.log(req.body)
    res.send('<h1>Upload success !</h1>')
})

app.get('/', (req, res) => {
    res.sendFile(__dirname+'/addCar.html')
})

app.get('/carStorege', (req, res)=> {
    res.send(carStorege)
    res.sendFile(__dirname+'/carStorge.html')
})

// put requset to edit the object..


app.listen(port, () => console.log('srever is live'))

1 个答案:

答案 0 :(得分:0)

使用 experss.js 发送 PUT 请求

使用 methodOverride<input type="hidden" name="_method" value="PUT" />

<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <h1>Add car to the storege</h1>
    <form action="/addCar" method="post">
        <input type="hidden" name="_method" value="PUT" />
        <label for="">Car model</label>
        <input name="car_model" type="text">
        <label for="">Color</label>
        <input name="color" type="text">
        <label for="">Engine capacity</label>
        <input name='Engine' type="number">
        <label for="">Price</label>
        <input name='price' type="number">
        <label for="">id</label>
        <input name='id' type="number">
        <input type="submit" value="Send">

    </form>
</body>

</html>

const express = require('express')
const bodyParser = require('body-parser')
const app = express()
const port = 3002
const Joi = require('@hapi/joi');
var methodOverride = require('method-override')
app.use(bodyParser.urlencoded({ extended: true }))
app.use(methodOverride(function (req, res) {
    console.log(req.body);
    if (req.body && typeof req.body === 'object' && '_method' in req.body) {
        // look in urlencoded POST bodies and delete it
        console.log('sss');
        var method = req.body._method
        delete req.body._method
        return method
    }
}))
let carStorege = []

app.post('/addCar', (req, res) => {
    const schema = Joi.object({
        car_model: Joi.string().required(),
        color: Joi.string().required(),
        Engine: Joi.number().required(),
        id: Joi.number().required(),
        price: Joi.number().required()
    })
    const validation = schema.validate(req.body)
    if (validation.error) {
        res.send('something worng!')
    }
    carStorege.push(req.body)
    console.log(req.body)
    res.send('<h1>Upload success !</h1>')
})

app.get('/', (req, res) => {
    res.sendFile(__dirname + '/addCar.html')
})

app.get('/carStorege', (req, res) => {
    res.send(carStorege)
    res.sendFile(__dirname + '/carStorge.html')
})

app.put('/addCar', function (req, res) {
    var car = req.car;
    console.log(req.car)
    res.send('<h1>sss success !</h1>')
    //do update
});




app.listen(port, () => console.log('srever is live'))