如何知道查询中缺少哪些参数?

时间:2019-05-29 09:30:39

标签: javascript node.js api express

我正在NodeJS中设置一个Booking路由器,并且其中包含许多参数。 现在,当我忘记参数时,我将返回错误:

500:需要更多信息

我想知道当我返回错误代码时是否有可能知道缺少哪些参数。

这是使用NodeJS制作的新API

这是我想从前面检索的参数(由ReactJS制成)

let body = {
        agentDutyCode: "STRING",
        RatePlanCode: params.rateCode,
        RoomCode: params.roomCode,
        AmountAfterTax: params.amountTax,
        Start: params.fromDate,
        End: params.toDate,
        CardCode: params.cardCode,
        CardNumber: params.cardNumber,
        ExpireDate: params.expireDate,
        SeriesCode: params.cvv,
        CardHolderName: params.nameCard,
        ChainCode: params.chainCode,
        HotelCode: params.hotelCode,
        RoomQuantities: params.roomQuantities,
        GuestQuantitie: params.numberGuest,
        GuestPerRoom: params.guestPerRoom,
        LastName: params.lastName,
        FirstName: params.firstName,
        PhoneNumber: params.phoneNumber,
        email: params.email,
        FVL_SUBUNIT_7: params.walletAddress
    }

这是我的承诺:

 cdsJson.bookResource(req.body)
        .then((response) => {
            if (response !== null) {
                res.response = {
                    ...response
                }
            } if (response.hotel.length === 0) {
                res.respStatus = 500
                res.response = {
                    sendMsg: "Need more informations"
                }
                next('route')
            }
            return response
        })

如果请求成功,我会得到一个预订ID,否则我会得到:

错误500:需要更多信息

3 个答案:

答案 0 :(得分:1)

阅读文档或源代码。

严重。如果API响应未在错误消息中告诉您,则无法知道它以编程方式期望的参数。

答案 1 :(得分:0)

尝试进行for ... in循环,如下所示:

cdsJson.bookResource(req.body)
.then((response) => {
    if (response !== null) {
        res.response = {
            ...response
        }
    } if (response.hotel.length === 0) {
        res.respStatus = 500

        let errorStr = "Need more informations"

        for(var key in req.body) { // Get all parameters that are not set
            if(objects[key] == undefined)
                errorStr += "\nParameter ["+key+"] is missing!"
        }

        res.response = {
            sendMsg: errorStr
        }
        next('route')
    }
    return response
})

答案 2 :(得分:0)

您正在尝试进行服务器端验证。在Node中,一个好的方法是为期望的参数定义一个JSON模式,然后在路由处理程序中使用JSON模式验证器验证请求中发送的数据。这将帮助您确定请求是否有效 并帮助您自动生成错误消息。通常,使用工具使您能够(通过模式)声明性地声明您的验证比使用命令性地编写代码手动验证对象要好得多(即更简单,更易于维护)。