【问题标题】:express js enforcing request body typesexpress js 强制请求主体类型
【发布时间】:2020-09-19 07:38:07
【问题描述】:

是否可以声明请求正文的类型?如果正文包含声明的属性以外的其他属性,我想返回错误的请求

import express from 'express'

const app = express()

app.use(express.json())

interface CustomRequest extends express.Request{
    body:{
        name:string
    }
}

app.post('/t', (req: CustomRequest, res: express.Response) => {
    res.send("hello world")
})

app.listen(5000, () => {
    console.log("app listening on 5000")
})

【问题讨论】:

    标签: node.js typescript express


    【解决方案1】:

    我建议你看看@hapi/joi 包网站。 https://hapi.dev/module/joi/

    它易于使用且功能强大!

    您可以实现一个中间件来验证请求(正文、参数、查询)以及响应对象!您可以使用express-joi-validator 包来实现。

    首先你必须导入模块:

    const Joi = require('@hapi/joi');
    const joiValidator = require('express-joi-validation')
      .createValidator();
    

    然后定义你的架构(预期的对象结构)

    const loginSchema = Joi.object({
        user: Joi.string().required(),
        password: Joi.string().required(),
    });
    

    最后实现你的中间件:

    app.post('/login', joiValidator.body(loginSchema), (req, res) => {
        // Your logic here...
        res.send({status: 'ok'}); // Just an example
    });
    

    如果验证失败,它将向客户端发送 400(错误请求)响应!

    如果您对此有任何疑问,请告诉我!

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 2021-10-15
      • 2019-11-04
      • 1970-01-01
      • 1970-01-01
      • 2012-03-31
      • 2021-03-04
      • 2021-01-07
      • 2015-07-05
      • 2019-02-07
      相关资源
      最近更新 更多