提问人:expressnoob 提问时间:1/15/2011 最后编辑:Communityexpressnoob 更新时间:5/28/2019 访问量:249738
Express 函数中的“res”和“req”参数是什么?
What are "res" and "req" parameters in Express functions?
问:
在以下 Express 函数中:
app.get('/user/:id', function(req, res){
res.send('user' + req.params.id);
});
什么是和?它们代表什么,它们是什么意思,它们做什么?req
res
谢谢!
答:
7赞
generalhenry
1/15/2011
#1
请求和响应。
要了解,请尝试一下。req
console.log(req);
评论
3赞
J.E.C.
2/14/2020
这无济于事;控制台中的输出为 [object Object]。
1赞
maridob
4/19/2020
如果你想要json,你必须:console.log(JSON.字符串化(req.body);
321赞
Dave Ward
1/15/2011
#2
req
是一个对象,其中包含有关引发事件的 HTTP 请求的信息。作为响应,您可以使用 发回所需的 HTTP 响应。req
res
这些参数可以命名为任何名称。如果更清楚,您可以将该代码更改为以下内容:
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 标头数组,其中包含类似 的项,您可以使用这些项来确定哪种浏览器发出请求、它可以处理哪种响应、它是否能够理解 HTTP 压缩等。
request.headers
request.headers.accept
- 查询字符串参数数组(如果有),在(例如 将导致包含字符串 )。
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赞
generalhenry
1/15/2011
您可以使用 curl 查看带有标头的完整响应
4赞
TK-421
1/16/2011
您可能想签出: en.wikipedia.org/wiki/Hypertext_Transfer_Protocol.不要尖酸刻薄,这是我们所有为 Web 开发的人都需要知道的事情!
7赞
Anton
2/26/2011
是的,这很棒,应该在express.js网站的主页上。
0赞
grantwparks
4/26/2012
ExpressNoob - 响应是一个对象,就像请求对象一样,但它包含与响应相关的字段和方法。通常使用响应的 send() 方法。send() 接受一大堆不同类型的第一个参数,该参数成为 HTTP 响应正文,第二个参数是 HTTP 响应代码。
7赞
akn
1/16/2016
如果有人正在寻找细节和结构,可以在 express docs 中描述: :expressjs.com/en/api.html#req, : expressjs.com/en/api.html#resreq
res
req
res
26赞
Myrne Stol
2/3/2012
#3
我注意到戴夫·沃德(Dave Ward)的回答中有一个错误(也许是最近的变化?
查询字符串参数位于 中,而不是 中。(见 https://stackoverflow.com/a/6913287/166530request.query
request.params
)
request.params
默认情况下,使用路由中任何“组件匹配”的值填充,即
app.get('/user/:id', function(request, response){
response.send('user ' + request.params.id);
});
并且,如果您已将其 express 配置为将其 bodyparser () 也与 POST 的 formdata 一起使用。(请参阅如何检索 POST 查询参数?app.use(express.bodyParser());
)
评论
req
=="request"
//res
=="response"