Express 기능에서 "res"및 "req"매개 변수는 무엇입니까?


183

다음과 같은 Express 기능에서 :

app.get('/user/:id', function(req, res){
    res.send('user' + req.params.id);
});

무엇 req이며res ? 그들은 무엇을 의미하고, 무엇을 의미하며, 무엇을 하는가?

감사!


1
req== "request"// res=="response"
nilon

답변:


270

req이벤트를 발생시킨 HTTP 요청에 대한 정보가 포함 된 객체입니다. 대응하기 위해 req, 당신은 사용res 원하는 HTTP 응답을 다시 보내는 데 합니다.

이러한 매개 변수는 무엇이든 명명 할 수 있습니다. 더 명확하면 해당 코드를 다음으로 변경할 수 있습니다.

app.get('/user/:id', function(request, response){
  response.send('user ' + request.params.id);
});

편집하다:

이 방법이 있다고 가정 해보십시오.

app.get('/people.json', function(request, response) { });

요청은 다음과 같은 속성을 가진 객체가 될 것입니다.

  • request.url"/people.json"이 특정 액션이 트리거 될 때
  • request.method어느는 것 "GET",이 경우에 따라서 app.get()호출.
  • request.headers와 같은 항목을 포함하는 의 HTTP 헤더 배열 request.headers.accept로, 요청한 브라우저의 종류, 처리 할 수있는 응답의 종류, HTTP 압축을 이해할 수 있는지 여부 등을 결정하는 데 사용할 수 있습니다.
  • 쿼리 문자열 매개 변수의 배열에, 어떤이 있다면 request.query(예 /people.json?foo=bar초래 request.query.foo문자열을 포함 "bar").

해당 요청에 응답하려면 응답 오브젝트를 사용하여 응답을 빌드하십시오. people.json예제 를 확장하려면 다음을 수행하십시오 .

app.get('/people.json', function(request, response) {
  // We want to set the content-type header so that the browser understands
  //  the content of the response.
  response.contentType('application/json');

  // Normally, the data is fetched from a database, but we can cheat:
  var people = [
    { name: 'Dave', location: 'Atlanta' },
    { name: 'Santa Claus', location: 'North Pole' },
    { name: 'Man in the Moon', location: 'The Moon' }
  ];

  // Since the request is for a JSON representation of the people, we
  //  should JSON serialize them. The built-in JSON.stringify() function
  //  does that.
  var peopleJSON = JSON.stringify(people);

  // Now, we can use the response object's send method to push that string
  //  of people JSON back to the browser in response to this request:
  response.send(peopleJSON);
});

1
curl을 사용하여 응답이 헤더로 완료된 것을 볼 수 있습니다
generalhenry

3
en.wikipedia.org/wiki/Hypertext_Transfer_Protocol 을 확인하십시오 . 비꼬 지 말고, 그것은 웹을 위해 개발하는 우리 모두가 알아야 할 것입니다!
TK-421

7
예. 이것은 express.js 웹 사이트의 메인 페이지에 있어야합니다.
Anton

expressnoob-응답은 요청 오브젝트와 마찬가지로 오브젝트이지만 응답과 관련된 필드 및 메소드를 포함합니다. 일반적으로 응답의 send () 메소드가 사용됩니다. send ()는 첫 번째 인수에 대해 다양한 유형의 전체를 허용하며, 이는 HTTP 응답 본문이되고 두 번째 인수는 HTTP 응답 코드입니다.
grantwparks

7
누군가가 세부 사항 reqres구조를 찾고 있다면 Express 문서에 설명되어 있습니다 : req: expressjs.com/en/api.html#req , res: expressjs.com/en/api.html#res
akn

25

Dave Ward의 답변에서 한 가지 오류가 발생했습니다 (최근의 변경 일 수 있습니까?). 쿼리 문자열 매개 변수가 request.query아닌 request.params입니다. ( https://stackoverflow.com/a/6913287/166530 참조 )

request.params 기본적으로 경로의 모든 "구성 요소 일치"값으로 채워집니다.

app.get('/user/:id', function(request, response){
  response.send('user ' + request.params.id);
});

bodyparser를 사용하도록 express를 구성한 경우app.use(express.bodyParser()); POST의 formdata와 함께 bodyparser ) . (참조 POST 쿼리 매개 변수를 검색하는 방법? )


6

요청 및 응답.

를 이해하려면 req시도하십시오 console.log(req);.


3
도움이되지 않습니다. 콘솔의 출력은 [object Object]입니다.
JEC

json을 원한다면 console.log (JSON.Stringify (req.body);
maridob
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.