ในฟังก์ชั่น Express ต่อไปนี้:
app.get('/user/:id', function(req, res){
res.send('user' + req.params.id);
});
สิ่งที่เป็นreq
และres
? พวกเขาหมายถึงอะไรพวกเขาหมายถึงอะไรและพวกเขาทำอะไร
ขอบคุณ!
ในฟังก์ชั่น Express ต่อไปนี้:
app.get('/user/:id', function(req, res){
res.send('user' + req.params.id);
});
สิ่งที่เป็นreq
และres
? พวกเขาหมายถึงอะไรพวกเขาหมายถึงอะไรและพวกเขาทำอะไร
ขอบคุณ!
คำตอบ:
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
ประกอบด้วยรายการเช่น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);
});
req
และres
โครงสร้างที่อธิบายไว้ในเอกสารด่วน: req
: expressjs.com/en/api.html#req , res
: expressjs.com/en/api.html#res
ผมสังเกตเห็นข้อผิดพลาดอย่างใดอย่างหนึ่งในคำตอบของเดฟวอร์ด (อาจจะมีการเปลี่ยนแปลงเมื่อเร็ว ๆ นี้?): สอบถาม PARAMATERS สตริงอยู่ในไม่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 ( app.use(express.bodyParser());
) เช่นเดียวกันกับ POST'ed formdata (ดูวิธีเรียกข้อมูลพารามิเตอร์ข้อความค้นหา POST )
req
=="request"
//res
=="response"