สร้าง API GraphQL ด้วย Deno: คู่มือฉบับภาษาไทย
บทนำ
GraphQL ได้กลายเป็นตัวเลือกยอดนิยมสำหรับการสร้าง APIs เนื่องจากมีความยืดหยุ่นและประสิทธิภาพที่เหนือกว่า REST APIs แบบเดิม Deno ซึ่งเป็น runtime ที่ปลอดภัยและทันสมัยสำหรับ JavaScript และ TypeScript มอบสภาพแวดล้อมที่ยอดเยี่ยมสำหรับการสร้าง GraphQL APIs ในบทความนี้ เราจะแนะนำคุณตลอดกระบวนการสร้าง GraphQL API อย่างง่ายด้วย Deno, TypeScript และ GraphQL Yoga
สิ่งที่ต้องมี
- Deno ติดตั้งบนเครื่องของคุณ (วิธีการติดตั้ง Deno)
- ความเข้าใจพื้นฐานเกี่ยวกับ TypeScript
- ความรู้เกี่ยวกับ GraphQL (Schema, Query, Mutation)
การตั้งค่าโปรเจ็กต์
เริ่มต้นด้วยการสร้าง directory สำหรับโปรเจ็กต์ของคุณ:
mkdir deno-graphql-apicd deno-graphql-api
จากนั้น สร้างไฟล์ deps.ts
เพื่อจัดการ dependencies ของเรา:
// deps.tsexport { GraphQLModule } from 'https://esm.sh/@graphql-yoga/[email protected]';export { createYoga } from 'https://esm.sh/[email protected]';export { serve } from 'https://deno.land/[email protected]/http/server.ts';
ไฟล์นี้จะ import modules ที่จำเป็นจาก esm.sh ซึ่งเป็น CDN สำหรับ JavaScript modules และ standard library ของ Deno
การกำหนด Schema
Schema GraphQL ของเราจะกำหนดโครงสร้างของข้อมูลที่เราสามารถ query ได้ สร้างไฟล์ schema.ts
:
// schema.tsexport const typeDefs = ` type Query { hello: String greeting(name: String): String }`;
Schema นี้กำหนด Query สองแบบ: hello
ซึ่งคืนค่า string คงที่ และ greeting
ซึ่งรับ argument name
และคืนค่าคำทักทาย
การสร้าง Resolvers
Resolvers คือ functions ที่คืนค่าข้อมูลสำหรับแต่ละ field ใน schema ของเรา สร้างไฟล์ resolvers.ts
:
// resolvers.tsexport const resolvers = { Query: { hello: () => 'Hello world!', greeting: (_: any, { name }: { name: string }) => `Hello, ${name}!`, },};
Resolver function สำหรับ hello
คืนค่า string 'Hello world!' และ resolver สำหรับ greeting
คืนค่าคำทักทายที่กำหนดเองโดยใช้ argument name
การตั้งค่า GraphQL Yoga Server
GraphQL Yoga เป็น server ที่รวดเร็วและง่ายต่อการใช้งานสำหรับ GraphQL สร้างไฟล์ server.ts
:
// server.tsimport { createYoga, GraphQLModule, serve } from './deps.ts';import { typeDefs } from './schema.ts';import { resolvers } from './resolvers.ts';const yoga = createYoga({ schema: { typeDefs, resolvers, },});const handler = yoga.handleRequest;serve(handler, { port: 3000 });console.log('Server is running on http://localhost:3000');
โค้ดนี้จะ import modules ที่จำเป็น สร้าง instance ของ GraphQL Yoga server โดยใช้ schema และ resolvers ของเรา จากนั้น server จะเริ่มทำงานบน port 3000
การรัน Server
รัน server โดยใช้คำสั่ง:
deno run --allow-net --allow-read server.ts
Flag --allow-net
อนุญาตให้ Deno เข้าถึงเครือข่าย และ --allow-read
อนุญาตให้อ่านไฟล์
การทดสอบ API
เปิด browser ของคุณและไปที่ http://localhost:3000 คุณจะเห็น GraphQL Playground ซึ่งคุณสามารถ query API ของคุณได้
ลอง query นี้:
query { hello}
คุณควรเห็นผลลัพธ์:
{ "data": { "hello": "Hello world!" }}
ลอง query นี้ด้วย:
query { greeting(name: "World")}
คุณควรเห็นผลลัพธ์:
{ "data": { "greeting": "Hello, World!" }}
สรุป
ในบทความนี้ เราได้แสดงวิธีสร้าง GraphQL API อย่างง่ายด้วย Deno, TypeScript และ GraphQL Yoga คุณสามารถใช้ความรู้นี้เพื่อสร้าง APIs ที่ซับซ้อนมากขึ้นสำหรับแอปพลิเคชันของคุณ
หากคุณกำลังมองหาผู้เชี่ยวชาญด้านการพัฒนาซอฟต์แวร์และ IT Consulting ในประเทศไทย ติดต่อ มีศิริ ดิจิทัล วันนี้เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับบริการของเรา
มีศิริ ดิจิทัล ให้บริการด้าน IT Consulting, Software Development, Digital Transformation และ Business Solutions ครอบคลุมทุกความต้องการด้านเทคโนโลยีของคุณ