วิธีสร้าง Secure Node.js GraphQL API

เผยแพร่แล้ว: 2022-03-11

ในบทความนี้ เรามุ่งหวังที่จะนำเสนอคำแนะนำอย่างรวดเร็วเกี่ยวกับวิธีสร้าง Node.js GraphQL API ที่ปลอดภัย

คำถามบางข้อที่อาจผุดขึ้นในใจอาจเป็น:

  • จุดประสงค์ของการใช้ GraphQL API คืออะไร
  • GraphQL API คืออะไร
  • แบบสอบถาม GraphQL คืออะไร
  • GraphQL มีประโยชน์อย่างไร?
  • GraphQL ดีกว่า REST หรือไม่
  • เหตุใดเราจึงใช้ Node.js

ทั้งหมดนี้เป็นคำถามที่ถูกต้อง แต่ก่อนที่จะตอบคำถาม เราควรเจาะลึกภาพรวมโดยสังเขปของสถานะปัจจุบันของการพัฒนาเว็บ:

  • เกือบทุกโซลูชันที่คุณพบในปัจจุบันใช้อินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน (API) บางประเภท
  • แม้ว่าคุณจะใช้เครือข่ายโซเชียล เช่น Facebook หรือ Instagram คุณยังคงเชื่อมต่อกับส่วนหน้าที่ใช้ API
  • หากคุณสงสัย คุณจะพบว่าบริการความบันเทิงออนไลน์เกือบทั้งหมดใช้ API ประเภทต่างๆ รวมถึงบริการต่างๆ เช่น Netflix, Spotify และ YouTube

ในแทบทุกสถานการณ์ คุณจะพบ API ที่คุณไม่จำเป็นต้องรู้ในรายละเอียด เช่น คุณไม่จำเป็นต้องรู้ว่ามันถูกสร้างขึ้นมาอย่างไร และคุณไม่จำเป็นต้องใช้เทคโนโลยีเดียวกันกับที่เคยเป็น สามารถรวมเข้ากับระบบของคุณเองได้ API ที่มีให้ทำให้คุณสามารถเสนอวิธีการสื่อสารระหว่างบริการต่างๆ ในมาตรฐานทั่วไปที่ทั้งบริการและไคลเอ็นต์สามารถสื่อสารได้โดยไม่ต้องพึ่งพากลุ่มเทคโนโลยีเฉพาะ

ด้วย API ที่มีโครงสร้างที่ดี เป็นไปได้ที่จะมี API ที่มั่นคง บำรุงรักษาได้ และปรับขนาดได้ ซึ่งสามารถให้บริการไคลเอ็นต์และแอปพลิเคชันส่วนหน้าได้หลายประเภท

ที่กล่าวว่า GraphQL API คือ อะไร?

GraphQL เป็นภาษาคิวรีสำหรับ API ที่พัฒนาขึ้นสำหรับใช้ภายใน Facebook และเผยแพร่เพื่อการใช้งานสาธารณะในปี 2015 รองรับการอ่าน การเขียน และการอัปเดตแบบเรียลไทม์ นอกจากนี้ยังเป็นโอเพ่นซอร์สและโดยทั่วไปจะเปรียบเทียบกับ REST และสถาปัตยกรรมอื่นๆ โดยสรุปมีพื้นฐานมาจาก:

  • แบบสอบถาม GraphQL - ช่วยให้ลูกค้าสามารถอ่านและจัดการวิธีการรับข้อมูลได้
  • การกลายพันธุ์ของ GraphQL - นี่คือวิธีการเขียนข้อมูลบนเซิร์ฟเวอร์ เป็นหลักการของ GraphQL เกี่ยวกับวิธีการเขียนข้อมูลลงในระบบ

แม้ว่าบทความนี้จะแสดงให้เห็นถึงสถานการณ์ที่เรียบง่ายแต่ใช้งานได้จริงเกี่ยวกับวิธีการสร้างและใช้งาน GraphQL API เราจะไม่ให้ข้อมูลเบื้องต้นเกี่ยวกับ GraphQL โดยละเอียด เหตุผลนั้นง่ายมาก เนื่องจากทีม GraphQL ได้จัดเตรียมเอกสารที่ครอบคลุมและแสดงรายการแนวทางปฏิบัติที่ดีที่สุดหลายประการในบทนำสู่ GraphQL

แบบสอบถาม GraphQL คืออะไร?

ตามที่อธิบายไว้ก่อนหน้านี้ การสืบค้นเป็นวิธีที่ไคลเอ็นต์สามารถอ่านและจัดการข้อมูลจาก API ได้ คุณสามารถส่งประเภทของออบเจ็กต์และเลือกชนิดของฟิลด์ที่คุณต้องการรับกลับได้ แบบสอบถามง่ายๆจะเป็นดังนี้:

 query{ users{ firstName, lastName } }

ในข้อความค้นหานี้ เรากำลังพยายามเข้าถึงผู้ใช้ทั้งหมดจากสคีมาของผู้ใช้ของเรา แต่ได้รับ firstName ชื่อและ lastName เท่านั้น ผลลัพธ์ของแบบสอบถามนี้จะเป็นเช่น:

 { "data": { "users": [ { "firstName": "Marcos", "lastName": "Silva" }, { "firstName": "Paulo", "lastName": "Silva" } ] } }

มันค่อนข้างง่ายสำหรับการใช้งานไคลเอนต์

จุดประสงค์ของการใช้ GraphQL API คืออะไร?

วัตถุประสงค์ของการสร้าง API คือความสามารถในการมีซอฟต์แวร์เป็นบริการที่สามารถรวมเข้ากับบริการภายนอกอื่นๆ แม้ว่าแอปพลิเคชันของคุณจะถูกใช้โดยฟรอนต์เอนด์เดียว คุณสามารถพิจารณาว่าฟรอนต์เอนด์นี้เป็นบริการภายนอก และสำหรับสิ่งนั้น คุณจะสามารถทำงานในโปรเจ็กต์ต่างๆ ได้เมื่อมีการสื่อสารระหว่างทั้งสองผ่าน API

หากคุณทำงานในทีมขนาดใหญ่ ก็สามารถแยกกันเพื่อสร้างทีม front-end และ back-end ได้ ซึ่งช่วยให้ทั้งสองใช้เทคโนโลยีเดียวกันและทำให้งานของพวกเขาง่ายขึ้น เมื่อสร้างสถาปัตยกรรม API สิ่งสำคัญคือต้องเลือกสิ่งที่เหมาะสมกว่าสำหรับโครงการและสิ่งที่ทำให้คุณเข้าใกล้โซลูชันที่คุณต้องการมากขึ้น

ในบทความนี้ เราจะเน้นที่โครงร่างสำหรับสร้าง API ที่ใช้ GraphQL

GraphQL ดีกว่า REST หรือไม่?

มันอาจจะดูยุ่งยากไปหน่อย แต่ฉันช่วยไม่ได้ นั่นขึ้นอยู่กับ

GraphQL เป็นแนวทางที่เหมาะกับหลาย ๆ สถานการณ์ได้เป็นอย่างดี REST เป็นแนวทางสถาปัตยกรรมที่ได้รับการพิสูจน์แล้วในหลายสถานการณ์เช่นกัน ปัจจุบัน มีบทความมากมายที่อธิบายว่าทำไมบทความหนึ่งจึงดีกว่าบทความอื่น หรือเหตุใดคุณจึงควรใช้เฉพาะ REST แทน GraphQL และยังมีอีกหลายวิธีที่คุณสามารถใช้งาน GraphQL ภายในและยังคงรักษาปลายทางของ API ให้เป็นสถาปัตยกรรมแบบ REST

คำแนะนำที่ดีที่สุดคือการรู้ถึงประโยชน์ของแต่ละแนวทาง วิเคราะห์โซลูชันที่คุณกำลังสร้าง ประเมินว่าทีมของคุณทำงานได้อย่างสบายใจกับโซลูชันเพียงใด และประเมินว่าคุณจะสามารถแนะนำทีมของคุณเพื่อเรียนรู้และลุกขึ้นได้หรือไม่ ความเร็วอย่างรวดเร็วก่อนที่จะเลือกระหว่างวิธีการ

บทความนี้เป็นแนวทางปฏิบัติมากกว่าการเปรียบเทียบเชิงอัตนัยของ GraphQL และ REST ในกรณีที่คุณต้องการอ่านการเปรียบเทียบโดยละเอียดของทั้งสอง เราขอแนะนำให้คุณอ่านบทความอื่นของเรา GraphQL vs. REST - บทช่วยสอน GraphQL

ในบทความของวันนี้ เราจะเน้นที่การสร้าง GraphQL API โดยใช้ Node.js

ทำไมเราใช้ Node.js?

GraphQL มีไลบรารี่ต่างๆ มากมายที่คุณสามารถใช้ได้ สำหรับวัตถุประสงค์ของบทความนี้ เราตัดสินใจที่จะใช้แนวคิดในการใช้ JavaScript กับ Node.js เนื่องจากมีการใช้งานอย่างแพร่หลาย และข้อเท็จจริงที่ว่า Node.js ช่วยให้นักพัฒนาสามารถใช้ไวยากรณ์ส่วนหน้าที่คุ้นเคยสำหรับการพัฒนาฝั่งเซิร์ฟเวอร์

นอกจากนี้ยังเป็นประโยชน์ในการเปรียบเทียบกับแนวทางของเรากับ API แบบ REST ซึ่งคล้ายกับที่แสดงในบทความบล็อกวิศวกรรม Toptal อื่น: การสร้าง API ของ REST ที่ปลอดภัยใน Node.js บทความนี้ยังแสดงการใช้ Node.js กับ Express เพื่อพัฒนา REST API โครงกระดูก ซึ่งจะช่วยให้คุณเปรียบเทียบความแตกต่างระหว่างสองวิธีนี้ได้ Node.js ยังได้รับการออกแบบด้วยแอปพลิเคชันเครือข่ายที่ปรับขนาดได้ ชุมชนทั่วโลก และไลบรารีโอเพนซอร์ซต่างๆ ที่คุณสามารถพบได้ที่เว็บไซต์ npm

คราวนี้เราจะแสดงวิธีสร้าง API โครงกระดูกด้วย GraphQL, Node.js และ Express!

ลงมือทำ GraphQL Tutorial

ตามที่สรุปไว้ก่อนหน้านี้ เราจะสร้างแนวคิดโครงกระดูกสำหรับ GraphQL API และคุณจำเป็นต้องรู้พื้นฐานของ Node.js และ Express ก่อนดำเนินการต่อ ซอร์สโค้ดของโครงการที่สร้างขึ้นสำหรับตัวอย่าง GraphQL นี้มีอยู่ที่นี่

เราจะจัดการกับทรัพยากรสองประเภท:

  • ผู้ใช้ ซึ่งเราจะจัดการกับ CRUD พื้นฐาน
  • ผลิตภัณฑ์ ซึ่งเราจะมีรายละเอียดเล็กน้อยเพื่อแสดงพลังของ GraphQL เพิ่มเติม

ผู้ใช้จะมีโครงสร้างดังต่อไปนี้:

  • id
  • ชื่อจริง
  • นามสกุล
  • อีเมล
  • รหัสผ่าน
  • ระดับการอนุญาต

ผลิตภัณฑ์จะมีโครงสร้างดังต่อไปนี้:

  • id
  • ชื่อ
  • คำอธิบาย
  • ราคา

สำหรับมาตรฐานการเข้ารหัส เราจะใช้ TypeScript สำหรับโครงการนี้ ในไฟล์ต้นฉบับ คุณจะสามารถกำหนดค่าทุกอย่างเพื่อเริ่มเขียนโค้ดด้วย TypeScript

มาโค้ดกันเถอะ!

ก่อนอื่น ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง Node.js เวอร์ชันล่าสุดแล้ว ในขณะที่เผยแพร่ เวอร์ชันปัจจุบันคือ 10.15.3 ตาม Nodejs.org

การเริ่มต้นโครงการ

มาเริ่มกันที่โฟลเดอร์ใหม่ที่เราตั้งชื่อได้ node-graphql ที่นั่น เราสามารถเปิดเทอร์มินัลหรือคอนโซล Git CLI และเริ่มต้นเวทย์มนตร์โดยใช้คำสั่งต่อไปนี้: npm init

การกำหนดค่าการพึ่งพาและ TypeScript . ของเรา

เพื่อเพิ่มความเร็วในกระบวนการ แทนที่ package.json ของคุณด้วยสิ่งต่อไปนี้ที่ที่เก็บ Git ของเราควรมีการพึ่งพาที่จำเป็นทั้งหมด:

 { "name": "node-graphql", "version": "1.0.0", "description": "", "main": "dist/index.js", "scripts": { "tsc": "tsc", "start": "npm run tsc && node ./build/app.js" }, "author": "", "license": "ISC", "dependencies": { "@types/express": "^4.16.1", "@types/express-graphql": "^0.6.2", "@types/graphql": "^14.0.7", "express": "^4.16.4", "express-graphql": "^0.7.1", "graphql": "^14.1.1", "graphql-tools": "^4.0.4" }, "devDependencies": { "tslint": "^5.14.0", "typescript": "^3.3.4000" } }

ด้วยการอัพเดต package.json เพียงแค่กดเทอร์มินัลอีกครั้งและใช้: npm install มันจะติดตั้งการพึ่งพาทั้งหมดที่จำเป็นในการเรียกใช้ GraphQL API นี้ภายใน Node.js และ Express

ส่วนต่อไปคือการกำหนดค่าโหมด TypeScript ของเรา เราต้องการไฟล์ชื่อ tsconfig.json ในโฟลเดอร์รูทของเรา โดยมีรายละเอียดดังนี้:

 { "compilerOptions": { "target": "ES2016", "module": "commonjs", "outDir": "./build", "strict": true, "esModuleInterop": true } }

ตรรกะของรหัสสำหรับการกำหนดค่านี้จะอยู่ที่โฟลเดอร์แอป ที่นั่น เราสามารถสร้างไฟล์ app.ts และสำหรับการทดสอบพื้นฐาน ให้เพิ่มโค้ดต่อไปนี้ที่นั่น:

 console.log('Hello Graphql Node API tutorial');

จากการกำหนดค่าของเรา ตอนนี้เราสามารถเรียกใช้ npm start และรอบิลด์ และสามารถทดสอบว่าทุกอย่างทำงานอย่างถูกต้อง ในคอนโซลเทอร์มินัลของคุณ คุณควรเห็น “บทช่วยสอน Hello GraphQL Node API” ของเรา ในเบื้องหลัง การกำหนดค่าโดยทั่วไปจะรวบรวมโค้ด build เป็น JavaScript ล้วนๆ จากนั้นจึงเรียกใช้งานบิลด์ของเราในโฟลเดอร์บิลด์

ตอนนี้ มากำหนดค่าโครงร่างพื้นฐานสำหรับ GraphQL API ของเรา สำหรับการเริ่มต้นโครงการ เราจะเพิ่มการนำเข้าพื้นฐานสามรายการ:

  • ด่วน
  • Express-graphql
  • เครื่องมือ Graphql

มาเริ่มกันเลยดีกว่า:

 import express from 'express'; import graphqlHTTP from 'express-graphql'; import {makeExecutableSchema} from 'graphql-tools';

ตอนนี้เราควรจะเริ่มเขียนโค้ดได้แล้ว ขั้นตอนต่อไปคือจัดการกับแอปของเราใน Express และการกำหนดค่า GraphQL พื้นฐาน เช่น:

 import express from 'express'; import graphqlHTTP from 'express-graphql'; import {makeExecutableSchema} from 'graphql-tools'; const app: express.Application = express(); const port = 3000; let typeDefs: any = [` type Query { hello: String } type Mutation { hello(message: String) : String } `]; let helloMessage: String = 'World!'; let resolvers = { Query: { hello: () => helloMessage }, Mutation: { hello: (_: any, helloData: any) => { helloMessage = helloData.message; return helloMessage; } } }; app.use( '/graphql', graphqlHTTP({ schema: makeExecutableSchema({typeDefs, resolvers}), graphiql: true }) ); app.listen(port, () => console.log(`Node Graphql API listening on port ${port}!`));

สิ่งที่เรากำลังทำคือ:

  • เปิดใช้งานพอร์ต 3000 สำหรับแอปเซิร์ฟเวอร์ Express ของเรา
  • การกำหนดข้อความค้นหาและการกลายพันธุ์ที่เราต้องการใช้เป็นตัวอย่างด่วน
  • กำหนดวิธีการทำงานของคิวรีและการกลายพันธุ์

ตกลง แต่เกิดอะไรขึ้นสำหรับ typeDefs และตัวแก้ไข รวมถึงความสัมพันธ์กับข้อความค้นหาและการกลายพันธุ์

  • typeDefs - คำจำกัดความของสคีมาของสิ่งที่เราคาดหวังได้จากข้อความค้นหาและการกลายพันธุ์
  • ตัว แก้ไข - แทนที่จะเป็นความคาดหวังของฟิลด์หรือพารามิเตอร์ที่จำเป็น ในที่นี้เราจะกำหนดฟังก์ชันและพฤติกรรมว่าการสืบค้นและการกลายพันธุ์ควรทำงานอย่างไร
  • แบบสอบถาม - "ได้รับ" ที่เราต้องการอ่านจากเซิร์ฟเวอร์
  • การกลายพันธุ์ - คำขอของเราที่จะส่งผลต่อข้อมูลใดๆ ที่เรามีบนเซิร์ฟเวอร์ของเราเอง

ตอนนี้ ให้เรียกใช้ npm start อีกครั้งเพื่อดูว่ามีอะไรบ้าง เราคาดว่าแอปจะทำงานด้วยข้อความต่อไปนี้: Node Graphql API กำลังฟังบนพอร์ต 3000!

ตอนนี้เราสามารถลองสืบค้นและทดสอบ GraphQL API บนเซิร์ฟเวอร์ของเราเองได้ทาง: http://localhost:3000/graphql

กวดวิชา GraphQL: การทดสอบเซิร์ฟเวอร์

เยี่ยมมาก ตอนนี้เราสามารถเขียนคำถามแรกของเราเองซึ่งถูกกำหนดเป็น "สวัสดี"

กวดวิชา GraphQL: แบบสอบถามแรก

โปรดทราบว่าวิธีที่เรากำหนดไว้ที่ typeDefs หน้าสามารถช่วยเราสร้างแบบสอบถามได้

ดีมาก แต่เราจะเปลี่ยนค่าได้อย่างไร? กลายพันธุ์!

ตอนนี้ มาดูกันว่าจะเกิดอะไรขึ้นเมื่อเราเปลี่ยนค่าในหน่วยความจำด้วยการกลายพันธุ์:

กวดวิชา GraphQL: สาธิตการกลายพันธุ์

ตอนนี้ เราสามารถดำเนินการ CRUD พื้นฐานด้วย GraphQL Node.js API ของเราได้แล้ว ไปข้างหน้าด้วยรหัสของเราตอนนี้

สินค้า

สำหรับผลิตภัณฑ์ เราจะใช้โมดูลที่เรียกว่าผลิตภัณฑ์ เพื่อลดความซับซ้อนของบทความนี้ เราจะใช้ฐานข้อมูลในหน่วยความจำเพื่อการสาธิตเท่านั้น เราจะกำหนดรูปแบบและบริการเพื่อจัดการผลิตภัณฑ์

โมเดลของเราจะขึ้นอยู่กับดังนี้:

 export class Product { private id: Number = 0; private name: String = ''; private description: String = ''; private price: Number = 0; constructor(productId: Number, productName: String, productDescription: String, price: Number) { this.id = productId; this.name = productName; this.description = productDescription; this.price = price; } }

บริการที่จะสื่อสารกับ GraphQL จะถูกกำหนดเป็น:

 export class ProductsService { public products: any = []; configTypeDefs() { let typeDefs = ` type Product { name: String, description: String, id: Int, price: Int } `; typeDefs += ` extend type Query { products: [Product] } `; typeDefs += ` extend type Mutation { product(name:String, id:Int, description: String, price: Int): Product! }`; return typeDefs; } configResolvers(resolvers: any) { resolvers.Query.products = () => { return this.products; }; resolvers.Mutation.product = (_: any, product: any) => { this.products.push(product); return product; }; } }

ผู้ใช้

สำหรับผู้ใช้ เราจะใช้โครงสร้างเดียวกับโมดูลผลิตภัณฑ์ เราจะมีรูปแบบและบริการสำหรับผู้ใช้ โมเดลจะถูกกำหนดเป็น:

 export class User { private id: Number = 0; private firstName: String = ''; private lastName: String = ''; private email: String = ''; private password: String = ''; private permissionLevel: Number = 1; constructor(id: Number, firstName: String, lastName: String, email: String, password: String, permissionLevel: Number) { this.id = id; this.firstName = firstName; this.lastName = lastName; this.email = email; this.password = password; this.permissionLevel = permissionLevel; } }

ในขณะเดียวกัน บริการของเราจะมีลักษณะดังนี้:

 const crypto = require('crypto'); export class UsersService { public users: any = []; configTypeDefs() { let typeDefs = ` type User { firstName: String, lastName: String, id: Int, password: String, permissionLevel: Int, email: String } `; typeDefs += ` extend type Query { users: [User] } `; typeDefs += ` extend type Mutation { user(firstName:String, lastName: String, password: String, permissionLevel: Int, email: String, id:Int): User! }`; return typeDefs; } configResolvers(resolvers: any) { resolvers.Query.users = () => { return this.users; }; resolvers.Mutation.user = (_: any, user: any) => { let salt = crypto.randomBytes(16).toString('base64'); let hash = crypto.createHmac('sha512', salt).update(user.password).digest("base64"); user.password = hash; this.users.push(user); return user; }; } }

เพื่อเป็นการเตือนความจำ รหัสที่มาสามารถใช้ได้จากลิงค์นี้

ตอนนี้เราสามารถเล่นและทดสอบโค้ดของเราได้แล้ว มาเริ่มกันเลย npm start เราจะให้เซิร์ฟเวอร์ทำงานที่พอร์ต 3000 ตอนนี้เราสามารถเข้าถึง GraphQL เพื่อทดสอบได้ที่ http://localhost:3000/graphql

ลองใช้การกลายพันธุ์เพื่อเพิ่มรายการในรายการผลิตภัณฑ์ของเรา:

Node.js การสาธิตการกลายพันธุ์ของ GraphQL

เพื่อทดสอบว่าใช้งานได้หรือไม่ ตอนนี้เราจะใช้แบบสอบถามสำหรับผลิตภัณฑ์ แต่รับเฉพาะ id name และ price :

 query{ products{ id, name, price } } The response will be: { "data": { "products": [ { "id": 100, "name": "My amazing product", "price": 400 } ] } }

และนั่นคือมัน; ผลิตภัณฑ์ทำงานได้ตามที่คาดไว้ ตอนนี้เราสามารถเล่นและเปลี่ยนสนามได้ถ้าต้องการ คุณสามารถลองเพิ่มคำอธิบาย:

 query{ products{ id, name, description, price } }

ตอนนี้เราสามารถมีคำอธิบายผลิตภัณฑ์ของเราได้แล้ว มาลองใช้ผู้ใช้กันเลย

 mutation{ user(id:200, firstName:"Marcos", lastName:"Silva", password:"amaz1ingP4ss", permissionLevel:9, email:"[email protected]") { id } }

และคำถามจะเป็นเช่น:

 query{ users{ id, firstName, lastName, password, email } }

ด้วยการตอบสนองเช่น:

 { "data": { "users": [ { "id": 200, "firstName": "Marcos", "lastName": "Silva", "password": "kpj6Mq0tGChGbZ+BT9Nw6RMCLReZEPPyBCaUS3X23lZwCCp1Ogb94/oqJlya0xOBdgEbUwqRSuZRjZGhCzLdeQ==", "email": "[email protected]" } ] } }

และตอนนี้โครงกระดูก GraphQL ของเราก็พร้อมแล้ว! จากนี้ไปมีขั้นตอนมากมายที่มุ่งไปสู่ ​​API ที่มีประโยชน์และทำงานได้อย่างสมบูรณ์ แต่ตอนนี้แกนหลักได้รับการตั้งค่าแล้ว

สรุปและความคิดสุดท้าย

แม้จะตัดขอบให้สั้นลง บทความก็ค่อนข้างใหญ่พร้อมข้อมูลพื้นฐานมากมายเกี่ยวกับการพัฒนา GraphQL Node.js API

มาทบทวนสิ่งที่เราได้กล่าวถึงไปแล้ว:

  • การใช้ Node.js กับ Express และ GraphQL เพื่อสร้าง GraphQL API
  • การใช้ GraphQL ขั้นพื้นฐาน
  • การใช้เคียวรีและการกลายพันธุ์เบื้องต้น
  • แนวทางพื้นฐานในการสร้างโมดูลสำหรับโครงการของคุณ
  • ทดสอบ GraphQL API ของเรา

เพื่อเน้นด้านการพัฒนาของสิ่งต่าง ๆ มากขึ้น เราได้หลีกเลี่ยงประเด็นสำคัญหลายประการที่สามารถสรุปสั้น ๆ ได้ดังนี้:

  • การตรวจสอบสำหรับรายการใหม่
  • การจัดการข้อผิดพลาดอย่างถูกต้องด้วยบริการข้อผิดพลาดทั่วไป
  • การตรวจสอบความถูกต้องของฟิลด์ที่ผู้ใช้สามารถใช้ได้ในแต่ละคำขอด้วยบริการทั่วไป
  • เพิ่มตัวสกัดกั้น JWT เพื่อรักษาความปลอดภัย API
  • จัดการแฮชรหัสผ่านด้วยวิธีการที่มีประสิทธิภาพมากขึ้น
  • เพิ่มหน่วยและการทดสอบการรวม;

จำไว้ว่าเรามีซอร์สโค้ดแบบเต็มที่ลิงค์ Git นี้ ใช้งาน แยกประเด็น เปิดประเด็น ดึงคำขอ และเล่นกับมันได้ตามสบาย! โปรดทราบว่ามาตรฐานและข้อเสนอแนะทั้งหมดที่จัดทำในบทความนี้ไม่ได้แกะสลักด้วยหิน

นี่เป็นเพียงหนึ่งในหลายแนวทางที่สามารถใช้เพื่อเริ่มออกแบบ GraphQL API ของคุณเอง นอกจากนี้ อย่าลืมอ่านและสำรวจ GraphQL โดยละเอียดยิ่งขึ้น เรียนรู้ว่ามีอะไรให้บ้างและจะทำให้ API ของคุณดียิ่งขึ้นได้อย่างไร