What is API First? อะไรคือ API First

Martial Lord
Gofive
Published in
3 min readFeb 2, 2022

ตอนนี้โลกของการพัฒนา Software ได้เติบโตจนมี Pattern การพัฒนาหลายรูปแบบไม่ว่าจะเป้น Singleton , Dependency Injection, SOA หรือ Microservice, Micro Frontend

วิธีการพัฒนาออกแบบก็มีหลายรูปแบบไม่ว่าจะเป็น Database First, Code-First และล่าสุดก็เป็น API First

API-First หรือบางทีเรียกว่า Design First

สำหรับ API First นั้นมีจุดประสงค์หลักๆเพื่อ สร้าง API ออกมาก่อนที่จะ Code มุมมองของ API First คือการออกแบบ API ที่เปรียบเสมือนกับ Class ออกมาก่อนที่จะทำการออกแบบว่าภายในขั้นตอนการพัฒนานั้นจะมีการติดต่อการใช้ฐานข้อมูลหรือการออกแบบ Structure เช่นไร

Code-First

การใช้ Code-First นั้นมีจุดประสงค์เพื่อสร้าง API เช่นกัน แต่ว่าไม่ได้ต้องออกแบบ API ก่อนแต่เป็นการ Code ก่อนซึ่งแจะแตกต่าง API-First ที่จะทำการออกแบบ API ให้เรียบร้อยก่อนจึงจะนำไปใช้ได้

ภาพความแสดงความแตกต่างเบื้องต้นของ API First และ Code First (Source from : swager.io)

เหตุผลที่ควรเลือก API First

1. เพื่อสร้างประสบการณ์ที่ดีให้กับ Developer (Developer Experience)

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

2. เพื่อลดการเกิดช่องโหว่ร้ายแรง(Critical) ของ API

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

3. เพิ่มความเร็วในการพัฒนามากยิ่งขึ้น

กระบวนการของ API First นั้นคือการที่เราจะต้องออกแบบ API ออกมาก่อน ดังนั้นสิ่งที่เกิดขึ้นนั้นคือ API แล้วจึงค่อยลงโค้ด การทำเช่นนี้จะทำให้ลดกระบวนการขัดแย้ง การรอระหว่าง Backend,Frontend และ Tester ลงได้ เพราะเมื่อมีการออกแบบ API Model ออกมา มี Swagger API ก่อนที่จะทำเริ่มทำการพัฒนา นั่นหมายถึง ทีมงานพัฒนาจะสามารถเริ่มงานได้อย่างรวดเร็วขึ้น ทีม Frontend ไม่ต้องรอให้ API เสร็จทั้งหมด Backend ไม่จำเป็นจะต้องคิดว่ามีอะไรบ้างที่ต้องส่งออกไป และลดกระบวนการออกแบบ Model และ Database ลง รวมถึง Tester ที่สามารถวางแผนทำ Test case , Test Flow ได้ก่อนที่การพัฒนาจะเริ่มทั้งหมด

4. เพื่อทำให้การทำงานระหว่างทีม Business และทีมพัฒนาราบรื่นยิ่งขึ้น

การทำงานแบบ API First จะช่วยเป็นขั้นตอนลัดในการทำความเข้าใจระหว่างทีมงาน Business ที่มีจุดแข็งทางด้าน Business เข้าใจในระบบธุรกิจ เห็นภาพชัดขึ้นว่าเขากำลังจะได้อะไร ขณะเดียวกันทางทีม Developer ก็จะเข้าใจด้วยว่าเขาจะต้องทำอะไรในงานชินนี้ การทำ API-First ก่อนจะลงมือพัฒนาจะทำให้ทีมทั้งสองเห็นภาพว่าพวกเขากำลังทำงานอะไรอยู่จะได้งานเช่นไร และจะต้องทำอย่างไรงานถึงจะออกมาถูกต้อง มีการทดสอบอย่างไร ค่าไหนที่พวกเขาต้องการและจำเป็น เป็นต้น สิ่งเหล่านี้จะส่งผลให้การทำงานราบรื่นและมีประสิทธิภาพมากกว่าการทำงานแบบ Code First ที่จะเป็นแบบปากเปล่าและลงมือทำเลยหากผิดพลาดขึ้นมาก็จะทำให้ทุกอย่างช้าลงไปอีก เป็นต้น

แล้วจะเริ่ม API First ได้อย่างไร?

1. Brainstorm — แน่นอนว่าการ Brainstorm หรือกระบวนร่วมกันคิดและวิเคราะห์จะเป็นสิ่งแรกที่เราควรทำในการทำ API First มันคือโดยการร่วมมือกันคิดกันระหว่างทีมพัฒนาออกและทีม Business เป็นขั้นตอนแรกที่เราควรจะทำเพื่อกลั่นกรองกระบวนออกมาว่า API ที่เราออกแบบนั้น ทำเพื่ออะไร? มีจุดประสงค์เช่นไร?

2. ให้ความสำคัญกับผู้มีส่วนร่วมในการใช้ API — แน่นอนว่าการออกแบบ API ที่ดีนั้นไม่เพียงแต่จะต้องคำนึงถึงการออกแบบให้กับฝั่ง Developer ใช้เท่านั้น แต่มันยังต้องออกแบบให้ตอบสนองต่อความต้องการของธุรกิจและผู้มีส่วนรู้เห็นในการที่ต้องใช้ API นี้ ไม่ว่าจะเป็น PO, BA,PM หรือผู้มีส่วนที่จะต้องเกี่ยวข้อง เพื่อให้ทุกฝ่ายรับรู้และเข้าใจว่า API นี้มีไว้ทำอะไรและลงความเห็นร่วมกันว่ามันจะต้องออกมาเป็นเช่นไร

3. Design Contract API — Contract API คือการออกแบบการรับรู้ร่วมกันของ API ว่าภายใน API จะประกอบด้วยอะไรบ้าง มี Method อะไร รับ Header เช่นไร, Parameter , Response header, Response Body ,Error code ที่เกิดขึ้น เป็นขั้นตอนที่จะมีการตกลงร่วมกันกับทีมว่า API ที่เกิดขึ้นจะมี Method อะไรบ้างและใช้ทำอะไร มีการอธิบายไว้แบบไหน เป็นต้น นับว่าเป็นขั้นตอนที่สำคัญสำหรับการวางมาตรฐานของ API ว่าจะไปทิศทางใดและทำให้ Developer และผู้ใช้งานสามารถใช้เป็นพื้นฐานในการออกแบบได้ในอนาคต

ส่วนสำคัญที่ควรมีในการออกแบบ Contract API

Object — คือการบ่งบอกว่า API นี้เป็นของ Object อะไรที่จะใช้ Return ออกไป

Method — คือวิธีการเรียกใช้ API ว่าเป็น Get , Post , Put ,Patch , Delete หรืออื่นๆ

Endpoint — คือ API URL ที่เราต้องการจะให้มันอยู่ เช่น /product/:id เป็นต้น

URL Parameter คือ Parameter ที่มากับ URL

Data Parameter คือ Parameter Payload ที่จะต้องส่งเข้ามา

Headers คือการรับค่าของ Header ว่ามีการส่งค่าใดๆ เข้ามา เพื่อให้ API รับรู้เช่น Authorization หรือ Content-Type

Success Response คือการออกแบบว่า Success เป้นโค้ดเช่นไรและมี Object อะไร กลับมาเป็นต้น

Error Response คือการออกแบบ Error Code เพื่อให้รับรู้ว่า มี Error Code อะไรบ้างที่ API นี้จะรับ เช่น 404 หมายถึง “ไม่พบ” หรือ 401 “ไม่มีสิทธิ์เข้าใช้งาน” เป็นต้น ทั้งนี้ Error Code ไม่จำเป็น Http Status code เสมอไป ขึ้นกับการยอมรับและออกแบบของทีมงาน

ตัวอย่าง API Contract : กดที่นี่

4. สร้าง Style Guide — คือ ขั้นตอนสำหรับการออกแบบว่า API เรามีรูปแบบที่เป็น Standard คล้ายๆ กัน หรือแนวทางการสร้าง API เป็นเช่นไร ทั้งแนวทางการอ่านและออกแบบ API Spec รวมถึงการออกแบบ API เวอร์ชั่นถัดไปเพื่อให้มั่นใจได้ว่า API ที่ออกแบบต่อไปจะเป็นมาตรฐานเดียวกันทั้งหมด

5. Mock API — ขั้นตอนสำคัญที่ควรมี เพราะการ Mock API ขึ้นมาจะทำให้ Developer ได้เห็นภาพของการ Request และ Response ของ API ว่ามีการทำงานเช่นไรและมีกี่เคสรวมทั้งผลลัพธ์ที่ออกมาจะเป็นเช่นไร โดย Tool ที่แนะนำก็คงไม่พ้น Postman ที่จะสามารถสร้าง Mock Server และ API Collection ได้อย่างแพร่หลาย รวมทั้งสร้าง Document ภายใน Request นั้นๆ อีกด้วย

6. Build API — ขั้นตอนสำหรับการพัฒนา API ขึ้นมา เพื่อให้นำไปใช้ต่อได้จริง

7. Monitor API นั่นคือการหมั่นตรวจสุขภาพของ API ว่า API เราจะยังใช้งานได้ปกติหรือไม่ สิ่งนี้ควรมี Automation Tool เข้ามาช่วยในการตรวจสอบ เพื่อให้มั่นใจได้ว่าเราจะไม่ได้เปลืองแรงในการตรวจสอบทีละ Request

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

เครื่องมือเสริมสำหรับช่วยในการใช้งาน API First

Postman — เป็นเครื่องมือแพร่หลายไปทั่วโลก Postman มีความสามารถมากมายไม่ว่าจะเป็น Workspace, collection, Mock APi, API Document หรืออื่นๆ ที่จะสามารถทำให้ นักออกแบบ API สามารถจบได้ภายในตัวเดียว

SwaggerHub — เป็นเครื่องมือทสำหรับช่วยออกแบบ API อีกตัวหนึ่งที่ออกโดย Swagger Hub จะสามารถกำหนดกฎ(Rule) พื้นฐานมาให้ เพื่อสร้าง Standard การออกแบบ API ขึ้นมาทำให้ออกแบบ API มีมาตรฐานมีกฎระบบไว้อย่างชัดเจนช่วยให้การออกแบบเร็วขึ้นรวมถึงยังสามารถทำ Mock ได้อีกด้วย

VS Code Open API — VS Code เป็น Tool ยอดนิยมสำหรับ Developer หลายๆคน ที่แพร่หลายในยุคปัจจุบัน และตอนนี้ VS Code ก็มี Extension ให้ Developer ได้ออกแบบ Open API ง่ายๆ กันแล้ว ด้วย Extension ตัวนี้จะทำให้นักออกแบบสามารถออกแบบ API ได้ง่ายดายยิ่งขึ้นและเร็วขึ้นกว่าเดิม ไม่ต้องพึ่งพา Tool ใดๆ ข้อเสียคือมันยังไม่สมบูรณ์แบบทั้งหมดเป็นเพียงแค่การออกแบบ API ออกมาเพื่อนำไปวางบน Server จริงอีกครั้ง ดาวโหลดที่นี่

ปัจจุบัน Gofive ได้เริ่มแล้วรึยัง?

ปัจจุบัน Gofive ได้เริ่มบางส่วนมีการให้หลายทีมได้นำ API First ขึ้นมาแล้ว โดยมีการใช้ Tool อย่าง VSCode และ Postman โดยจะเริ่มจาก Core เข้ามาก่อนและจะนำไปใช้ยังส่วนอื่น เช่น Venio และ Empeo กัน

Reference:

Latest Web Development Trends to Follow in 2022 — Hetarth Consulting
OpenAPI (Swagger) Editor — Visual Studio Marketplace
VS Code :: ใช้งาน Open API หรือ Swagger Editor ได้แล้ว (somkiat.cc)

Understanding the API-First Approach to Building Products (swagger.io)

Design First or Code First: What’s the Best Approach to API Development? (swagger.io)

API-First, API Design-First, or Code-First: Which Should You Choose (stoplight.io)
An example of an API contract between the server and front-end devices · GitHub

--

--