Заполните файл промежуточного программного обеспечения так, чтобы все параметры запроса были проверены, а нулевые и неопределенные значения выдавали сообщение об ошибке. - PullRequest
1 голос
/ 28 мая 2019

выводится, когда передаются параметры name и age.
проблема постановки задачи для создания api: заполните файл промежуточного программного обеспечения и файл index.js в данном приложении так, чтобы все параметры запроса, требуемые маршрутом, были проверены и имели нулевое значениеи неопределенные значения выдают сообщение об ошибке - Обязательными параметрами запроса являются: name: String, age: Number

, создайте маршрут с именем '/ query' и отправьте ответ, как описано выше, когда запрашивается этот маршрут.по мне, API должен включать эти условия, чтобы получить желаемый результат, они:

1. когда оба параметра запроса присутствуют, ответьте успешно (статус: 200)

2.если введен параметр запроса возраста и параметр имени пуст, то ответить с ошибкой (статус: 403)

3. когда введен параметр запроса имени и параметр возраста пуст, то ответить с ошибкой (статус: 403)

когда один из параметров запроса имеет значение null для "например: 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"
    }
    }

, но ожидаемый результат должен иметь ошибку: true, status: 403 Это ошибка, с которой сталкиваются.

есть два файла: один файл 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
   }

1 Ответ

0 голосов
/ 28 мая 2019

Я думаю, что ваша проблема в пустой строке case.
В случае ?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 не пропущен, тот факт, что проверка возраста выполняется, означает, что ваш первый блок, если блок не был выполнен, так что параметр 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 {
...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...