2017-12-20 5 views
0

내 코드는 찾을 수 있습니다 :빈 요청 매개 변수 나를 API 오류

xyz.js 

const testFunction = (req, res) => { 
    req.checkParams('xyz_name', 'Invalid name').notEmpty(); 
    req.sanitize('xyz_name').trim(); 

    const errors = req.validationErrors(); 
    if (errors) { 
     res.json({ 
      status: '500', 
      message: errors 
     }); 
    } else { 

     res.json({ 
      status: '200', 
      message: 'list', 
      data: req.params.xyz_name 
     }); 
    } 
}; 


module.exports = testFunction; 

내가 http://localhost:3000/test/xyz/abc을하려고하면 잘 작동

app.get('/test/xyz/:xyz_name', test); 

을 app.js. 내가 http://localhost:3000/test/xyz를 입력 할 때, 그것은 나를

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta charset="utf-8"> 
     <title>Error</title> 
    </head> 
    <body> 
     <pre>Cannot GET /test/xyz</pre> 
    </body> 

아무것도 거기에 오류주고, 나는 그것이 작동하도록 내 코드에서 놓친 거지?

+4

'xyz_name'이 선택 사항이면 '?'가 필요합니다. –

+1

고마워, 효과가있었습니다. 미래의 독자를 도울 수 있도록 답으로 제공해 주시겠습니까? –

+0

그냥 했어! 그것이 도움이 되었기 때문에 기쁘다 !!! –

답변

3

: 경로는 매개 변수를 제공할지 여부는 요청을 처리하기 위해 당신이 원하는 경우

, 난 당신이 옵션과 같이 매개 변수를 확인해야합니다 생각 매개 변수는 Express.js에 ?으로 지정해야합니다.

/test/xyz/test이 아닌 /test/xyz과 일치합니다. 기본적으로 필수 매개 변수는 xyz_name입니다. 아무것도 제공하지 않으면 실패합니다.

/test/xyz/:xyz_name?/test/xyz/test/test/xyz과 일치합니다. 이 매개 변수는 선택적 매개 변수로 xyz_name으로 설정됩니다. 아무 것도 제공되지 않으면 경로가 여전히 손상됩니다.

1

경로가 xyz_name 매개 변수를 요구하도록 구성 되었기 때문입니다. 제공되지 않기 때문에 적절한 경로 일치를 찾을 수 없습니다. 선택 사양이있을 때

app.get('/test/xyz/:xyz_name?', test);