เริ่มสร้าง Module และ Controller กับ nestjs-framework
ในบทความนี้จะ พูดถึงวิธีการสร้าง Module ต่างๆภายใน Project
ก่อนอื่นจะต้องทำความเข้าใจกับโครงสร้างของ โปรเจคก่อน
ในโครงสร้างของโปรเจค จะขอกล่าวเฉพาะที่จะต้องใช้งาน ก็คือ Folder src จะมีไฟล์ที่ประกอบไปด้วย
ฝากกดโฆษณา Google Ads สัก click เพื่อเป็นกำลังใจแก่ผู้เขียนด้วยนะครับ
แต่ละไฟล์จะมีหน้าที่ในการทำ Routing เป็นชุดๆ โดยที่เวลาที่เราเรียก root ของ path เช่น http://localhost:3000/
มันจะไปเรียก app.module.ts แล้วก็จะจัดการไปเรียก app.controller.ts ต่ออีกทีหนึ่ง และ ใน app.controller.ts จะมีการจัดการและกำหนด Routing ต่างๆผ่าน Decorator เช่น @Get @Post เป็นต้น เพื่อกำหนดหน้าที่ Method ในการ Request ข้อมูล
Tip: ปกติเวลาที่จะใช้ @Get() และสังเกตว่าไม่มี parameter อะไร เช่น
@Get()
getHello1 : string {
return “hello1”;
}
@Get()
getHello2 : string {
return “hello2”;
}
เมื่อเรียก ที่ Path URL แล้วนั้น มันจะวิ่งไปที่ function บนสุด ดังนั้นจะไม่สามารถใช้ Get ได้หลาย function ในกรณีนี้ แต่ถ้าอยากจะใช้ล่ะ ทำอย่างไร
ให้ใส่ parameter ลงไปใน function เช่น
@Get(‘hello2’)
getHello2 : string {
return “hello2”;
}
ดังนั้นเวลาที่เรียก Path URL ก็จะต้องเรียกด้วย http://localhost:3000/hello2 ต่อท้ายนั่นเอง
จะเห็นว่าตัวอย่างที่ผ่านมาจะเป็น controller ที่ถูก generate มาให้เป็น Base ตั้งต้นสมมติว่าตอนนี้เราอยากจะมี Routing อื่นๆด้วยล่ะทำอย่างไร
สมมติว่าเราจะสร้าง path api ที่ชื่อว่า http://localhost:3000/blog
ให้ทำการสร้าง folder ขึ้นมาในอยู่ภายใต้ src/blog
ขั้นตอนที่ 1 ให้ใช้ command line ให้เปิด terminal ขึ้นมา แล้วใช้คำสั่งในการ generate module ขึ้นมาแล้วตามด้วยชื่อไฟล์ แนะนำว่าให้ตั้งให้ตรงกับ folder คำสั่งว่า nest g module blog
จากนั้นเราจะได้ไฟล์ขึ้นมา 1 ไฟล์
ขั้นตอนที่ 2 คราวนี้เราก็สร้างไฟล์ controller ขึ้นในลักษณะเดียวกัน คือ ใช้คำสั่ง nest g controller blog
จากนั้นเราจะได้ไฟล์ขึ้นมา 2 ไฟล์ ได้แก่ blog.controller.ts และ blog.controller.spec.ts
ในส่วนของ blog.controller.spec.ts เป็นไฟล์ที่ใช้สำหรับทดสอบ
เมื่อทำเสร็จทั้ง 2 ขั้นตอนแล้วนั้นก็จะต้องทำการเชื่อมต่อกับ Module Root ของโปรเจค ก็คือมาดูที่ app.module.ts ให้เช็คว่า ที่ไฟล์นี้มีการ import Module ใหม่ที่เราสร้างขึ้นมาหรือไม่
ถ้าไม่ จะไม่สามารถใช้งานได้
คราวนี้มาที่ไฟล์ Controller ที่ไฟล์ blog.controller.ts เพื่อจัดการ route ข้อมูลมาแสดงผล ยกตัวอย่างเช่น
@Get()
getBlog(){
return ["Book1","Book2","Book3"];
}
เมื่อไป Run ที่ URL http://localhost:3000/blog
ก็จะแสดงผลตามนี้