。
创建api的问题陈述:
在给定的应用程序中完成中间件文件和index.js文件,以便验证路由所需的所有查询参数,并且null和undefined值会引发错误消息-
必填的查询参数是-name:String,age:Number
创建一个名为“ / query”的路由,并在请求该路由时如上所述发送响应。 根据我的说法,api应该包括这些条件以获得所需的输出,它们是:
1。当同时存在两个查询参数时,响应成功(状态:200)
2。输入年龄查询参数且名称参数为空时,响应失败(状态:403)
3。输入姓名查询参数且年龄参数为空时,响应失败(状态:403)
“ http://localhost:3000/query/?age=2&name”的查询参数之一为空时
the output i get is this:
{
"error": false,
"status": 200,
"userMessage": "all parameters entered",
"data": {
"name": "",
"age": "2"
}
}
,但预期输出应具有 错误:是的, 状态:403 这是iam面临的错误。
有两个文件。一个是index.js文件,另一个是checkQueryParameters.js文件。(这是一个中间件)
index.js代码
const express = require('express');
const app = express();
const middleware = require('./middleware/checkQueryParameter');
app.get('/query',middleware.checkQueryParameters,(req,res)=>{
res.end();
});
app.listen(3000,()=>console.log('Example app listening on point
3000'));
module.exports = app;
checkQueryParameters.js代码
let checkQueryParameters = (req,res,next)=>{
let name = req.query.name;
let age = req.query.age;
console.log(typeof(age));
console.log(typeof(name))
console.log(age);
console.log(name);
if(typeof name == undefined || name == null){
let result ={
error : true,
status : 403,
userMessage : 'some parameters missing',
data : 'name'
}
res.send(result);
}
else if(typeof age == undefined || age == null){
let result ={
error : true,
status : 403,
userMessage : 'all parameters missing',
data : 'age'
}
res.send(result);
}
else{
let result ={
error : false,
status : 200,
userMessage : 'all parameters entered',
data :{
'name' : name,
'age' : age
}
}
res.send(result);
}
}
module.exports = {
checkQueryParameters:checkQueryParameters
}
答案 0 :(得分:0)
我认为您的问题是一个空字符串情况。
对于?age=2&name
,如果您console.log(req.query.name);
,您可能会看到name
不是null
,不是undefined
。它是一个空字符串''。如果要将该情况检查为错误,也应该检查一个空字符串。
if(typeof name == undefined || name == null || name === ''){
...
或
if(typeof age == undefined || age == null || age === ''){
....
关于中间件逻辑其余部分的一点。在if else
块中,您检查年龄参数,并发送一条消息“缺少所有参数”。那是错的。 name
并不缺少,执行年龄验证这一事实意味着您的第一个if块没有执行,因此name参数非常有效。您应该这样处理:
if(typeof name == undefined || name == null || name === ''){
let result = {
error : true,
status : 403,
userMessage : 'name parameter is missing',
data : 'name'
}
...
} else if(typeof age == undefined || age == null || age === ''){
let result = {
error : true,
status : 403,
userMessage : 'age parameter is missing',
data : 'age'
}
...
}
else {
...
}