小编典典

Express 函数中的“res”和“req”参数是什么?

all

在以下 Express 函数中:

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

req和是什么res?它们代表什么,它们的含义是什么,它们是做什么的?

谢谢!


阅读 73

收藏
2022-06-24

共1个答案

小编典典

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()调用。
  • 中的 HTTP 标头数组request.headers,包含诸如 之类的项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);
});
2022-06-24