Koa.js - การสร้าง URL
เราสามารถกำหนดเส้นทางได้แล้ว เป็นแบบคงที่หรือคงที่ ในการใช้เส้นทางแบบไดนามิกเราจำเป็นต้องระบุเส้นทางประเภทต่างๆ การใช้เส้นทางแบบไดนามิกช่วยให้เราสามารถส่งผ่านพารามิเตอร์และประมวลผลตามพวกเขาได้ ต่อไปนี้เป็นตัวอย่างของเส้นทางแบบไดนามิก
var koa = require('koa');
var router = require('koa-router');
var app = koa();
var _ = router();
_.get('/:id', sendID);
function *sendID() {
this.body = 'The id you specified is ' + this.params.id;
}
app.use(_.routes());
app.listen(3000);
เพื่อทดสอบสิ่งนี้ไปที่ https://localhost:3000/123. คุณจะได้รับคำตอบดังต่อไปนี้
คุณสามารถแทนที่ "123" ใน URL ด้วยสิ่งอื่นและจะปรากฏในการตอบกลับ ต่อไปนี้เป็นตัวอย่างที่ซับซ้อนข้างต้น
var koa = require('koa');
var router = require('koa-router');
var app = koa();
var _ = router();
_.get('/things/:name/:id', sendIdAndName);
function *sendIdAndName(){
this.body = 'id: ' + this.params.id + ' and name: ' + this.params.name;
};
app.use(_.routes());
app.listen(3000);
เพื่อทดสอบสิ่งนี้ไปที่ https://localhost:3000/things/tutorialspoint/12345.
คุณสามารถใช้ไฟล์ this.paramsเพื่อเข้าถึงพารามิเตอร์ทั้งหมดที่คุณส่งผ่านใน URL โปรดทราบว่าสองรายการข้างต้นมีเส้นทางที่แตกต่างกัน พวกเขาจะไม่ทับซ้อนกัน นอกจากนี้หากคุณต้องการรันโค้ดเมื่อคุณได้รับ '/ things' คุณต้องกำหนดแยกต่างหาก
รูปแบบที่ตรงกันเส้นทาง
คุณยังสามารถใช้ regex เพื่อ จำกัด การจับคู่พารามิเตอร์ URL สมมติว่าคุณต้องให้รหัสเป็นตัวเลขยาวห้าหลัก คุณสามารถใช้นิยามเส้นทางต่อไปนี้
var koa = require('koa');
var router = require('koa-router');
var app = koa();
var _ = router();
_.get('/things/:id([0-9]{5})', sendID);
function *sendID(){
this.body = 'id: ' + this.params.id;
}
app.use(_.routes());
app.listen(3000);
โปรดทราบว่าสิ่งนี้จะ onlyตรงกับคำขอที่มีรหัสยาว 5 หลัก คุณสามารถใช้ regexes ที่ซับซ้อนมากขึ้นเพื่อจับคู่ / ตรวจสอบเส้นทางของคุณ หากเส้นทางของคุณไม่ตรงกับคำขอคุณจะได้รับข้อความ "ไม่พบ" เป็นการตอบกลับ
ตัวอย่างเช่นหากเรากำหนดเส้นทางเดียวกันกับด้านบนเมื่อขอ URL ที่ถูกต้องเราจะได้รับ -