วิธีใช้ Gemini สร้าง API Documentation

Google Gemini สามารถช่วยสร้าง API Documentation จาก Source Code, Route, Controller, Schema, Example Request หรือ API Specification ที่มีอยู่ได้ ตั้งแต่เอกสาร Endpoint แบบง่ายไปจนถึง Documentation ที่ประกอบด้วย Authentication, Parameters, Request Body, Response Schema, Error Code และตัวอย่างการเรียก API

หากโปรเจกต์มีหลายไฟล์ สามารถนำ Code Folder หรือ GitHub Repository เข้า Gemini เพื่อช่วยให้ AI เข้าใจภาพรวมของ Codebase ก่อนสร้าง Documentation ได้ แต่ควรมองเอกสารที่ Gemini สร้างเป็น Draft ที่ต้องตรวจเทียบกับ Source Code และ Runtime จริง ไม่ใช่เอกสารที่ถูกต้องอัตโนมัติ 100%

Workflow ที่เหมาะคือ อ่าน Code → หา Endpoint → ตรวจ Request/Response → สร้าง API Inventory → เขียน Documentation → ตรวจ Code จริง → ทดสอบ API → Publish

❶ 📚 API Documentation คืออะไร

API Documentation คือเอกสารที่อธิบายวิธีใช้งาน API ให้ Developer คนอื่นเข้าใจว่า

  • API ทำอะไร
  • Endpoint อยู่ที่ไหน
  • ใช้ HTTP Method อะไร
  • ต้อง Authentication หรือไม่
  • ส่ง Parameter อะไร
  • Request Body รูปแบบใด
  • Response กลับมาแบบไหน
  • มี Error Code อะไร
  • Rate Limit เป็นอย่างไร
  • มีตัวอย่าง Request/Response หรือไม่

ตัวอย่าง API

GET /api/products

Documentation ที่ดีไม่ควรบอกเพียงชื่อ Endpoint

แต่ควรตอบได้ว่า

ใช้ทำอะไร
ใครเรียกได้
ส่งอะไร
ได้อะไรกลับมา
ผิดพลาดแบบไหน

❷ 🤖 Gemini ช่วยสร้าง API Documentation ได้อย่างไร

Gemini สามารถช่วยงาน Documentation ได้หลายรูปแบบ เช่น

  • อ่าน Route
  • อ่าน Controller
  • อ่าน Service
  • อ่าน Model
  • อ่าน Schema
  • หา API Endpoint
  • สรุป Endpoint
  • สร้าง Parameter Table
  • สร้าง Request Example
  • สร้าง Response Example
  • อธิบาย Authentication
  • สร้าง Error Documentation
  • สร้าง OpenAPI Draft
  • อธิบาย API Flow
  • สร้าง Getting Started
  • สร้าง Changelog Draft
  • ปรับภาษาของ Documentation
  • ตรวจความสอดคล้องระหว่าง Code กับ Documentation

เหมาะทั้งสำหรับสร้างเอกสารใหม่และปรับเอกสารเก่าที่ไม่ตรงกับ Code ปัจจุบัน

❸ 🧠 อย่าเริ่มด้วย “สร้าง API Documentation ให้ทั้งหมด”

คำสั่งนี้กว้างเกินไป

Gemini อาจต้องเดา

  • Endpoint
  • Authentication
  • Base URL
  • Required Parameter
  • Response
  • Error Code
  • Permission
  • API Version

หาก Context ไม่พอ AI อาจสร้างรายละเอียดที่ดูสมจริงแต่ไม่มีอยู่ในระบบ

Prompt ที่ดีกว่าคือ

“อ่าน Codebase นี้และสร้าง API Inventory ก่อน โดยยังไม่เขียน Documentation และห้ามสร้าง Endpoint ที่หาไม่พบใน Code”

เมื่อ Inventory ถูกต้องแล้วค่อยสร้างเอกสาร

❹ 🗺️ เริ่มจากสร้าง API Inventory

API Inventory คือรายการ Endpoint ทั้งหมดที่พบ

ตัวอย่าง

MethodPathPurposeAuth
GET/api/productsรายการสินค้าNo
GET/api/products/{id}รายละเอียดสินค้าNo
POST/api/productsเพิ่มสินค้าAdmin
PUT/api/products/{id}แก้สินค้าAdmin
DELETE/api/products/{id}ลบสินค้าAdmin

Prompt

“อ่าน Route และ Controller ทั้งหมดแล้วสร้าง API Inventory โดยแสดง Method, Path, Handler, Authentication และ File ที่เกี่ยวข้อง ห้ามเดา Endpoint”

ขั้นตอนนี้ทำให้ตรวจได้ก่อนว่า Gemini อ่าน Code ถูกหรือไม่

❺ 📂 ใช้ Gemini กับ Code Folder

หาก API Project อยู่ในเครื่องและมีหลายไฟล์ การส่ง Function แยกทีละไฟล์อาจทำให้ AI ไม่เห็นภาพรวม

สามารถใช้ Code Folder เป็น Context แล้วถาม

“อ่าน Code Folder นี้ก่อนและหา:

  1. Entry Point
  2. Route
  3. Controller
  4. Service
  5. Data Model
  6. Authentication Middleware
  7. Error Handler

ยังไม่สร้าง Documentation”

จากนั้นจึงสร้าง API Map

วิธีนี้เหมาะกับ Project เช่น

src/
├── routes/
├── controllers/
├── services/
├── models/
├── middleware/
└── utils/

❻ 🐙 ใช้ GitHub Repository สร้าง Documentation

Gemini Web App รองรับการ Import GitHub Repository เพื่อถามเกี่ยวกับ Codebase

สามารถใช้ Workflow

GitHub Repository
↓
Gemini
↓
อ่าน Codebase
↓
API Inventory
↓
Documentation Draft

Prompt ตัวอย่าง

“อ่าน Repository นี้และค้นหา API Route ทั้งหมด

ยังไม่สร้าง Documentation

ให้แสดง:

  • HTTP Method
  • Endpoint
  • Route File
  • Controller
  • Authentication Middleware
  • Request Schema
  • Response ที่พบจาก Code”

เมื่อรายการถูกต้องค่อยสั่ง

“สร้าง Documentation จาก Inventory นี้”

❼ ⚠️ Repository ที่ Import ไม่ Sync อัตโนมัติ

เรื่องนี้สำคัญมากสำหรับ Documentation

ถ้า Import Repository วันนี้ แล้ว Developer Push Endpoint ใหม่เข้า GitHub ภายหลัง Context เดิมของ Geminiจะไม่ได้รับ Code ใหม่โดยอัตโนมัติ

จึงอาจเกิด

Code ล่าสุด
≠
Documentation ที่ Gemini สร้างจาก Snapshot เก่า

ก่อน Generate Documentation ใหม่ควรตรวจว่า Code ที่ Gemini อ่านเป็น Version ที่ต้องการจริง

❽ 📋 Prompt แม่แบบสร้าง API Documentation

สามารถใช้ Prompt นี้ได้

“ช่วยสร้าง API Documentation จาก Source Code ที่ให้มา

ขั้นตอน:

  1. อ่าน Code ก่อน
  2. สร้าง API Inventory
  3. ตรวจ Authentication
  4. ตรวจ Request Validation
  5. ตรวจ Response
  6. ตรวจ Error Handler
  7. หลังจากนั้นจึงสร้าง Documentation

สำหรับแต่ละ Endpoint ให้มี:

  • Method
  • Path
  • Description
  • Authentication
  • Permission
  • Path Parameters
  • Query Parameters
  • Headers
  • Request Body
  • Response
  • Error Responses
  • Example Request
  • Example Response

กฎ:

  • ห้ามสร้าง Endpoint ที่ไม่พบ
  • ห้ามสร้าง Field ที่ไม่พบใน Schema หรือ Code
  • ถ้าข้อมูลใดไม่ยืนยัน ให้ระบุว่า Not confirmed
  • แยกค่าตัวอย่างออกจากค่าจริง
  • ห้ามใส่ API Key จริง
  • บอก File/Function ที่ใช้เป็นหลักฐานของแต่ละ Endpoint”

Prompt แบบนี้ลด Hallucination ได้มากกว่าการขอ Documentation ทันที

❾ 🧱 โครงสร้าง API Documentation ที่ดี

Documentation หลักควรมีหลายส่วน

Overview

API นี้ใช้ทำอะไร

Base URL

Endpoint เริ่มต้นจากที่ใด

Authentication

ยืนยันตัวตนอย่างไร

Endpoints

รายการ API

Request

ส่งข้อมูลอะไร

Response

ได้ข้อมูลแบบไหน

Errors

เกิด Error อะไรได้บ้าง

Rate Limits

มีข้อจำกัด Request หรือไม่

Pagination

แบ่งหน้าข้อมูลอย่างไร

Examples

ตัวอย่างใช้งาน

Versioning

API Version

Changelog

สิ่งที่เปลี่ยน

ไม่ใช่ API ทุกระบบต้องมีทุกหัวข้อ แต่ควรเลือกตาม Feature จริง

❿ 🌐 เขียน API Overview อย่างไร

ตัวอย่าง

Products API ใช้สำหรับอ่านและจัดการข้อมูลสินค้าในระบบ

Public Endpoint สามารถอ่านข้อมูลสินค้าได้

Endpoint ที่สร้าง แก้ไข หรือลบสินค้าต้องใช้สิทธิ์ Admin

Overview ควรช่วย Developer เข้าใจ API ภายในไม่กี่วินาที

ไม่ควรเริ่มด้วยประวัติโครงการยาวหลายย่อหน้า

🔗 Base URL ต้องระวัง

ตัวอย่าง

https://api.example.com/v1

หาก Source Code ไม่ยืนยัน Domain จริง อย่าให้ Gemini สร้าง Domain สมมติแล้วเขียนเหมือนเป็น Production URL

ควรใช้ Placeholder ชัดเจน เช่น

https://YOUR_API_HOST/v1

หรือระบุ Environment

Production: [กำหนดจากระบบจริง]
Staging: [กำหนดจากระบบจริง]

Prompt

“หากหา Base URL จริงไม่พบ ให้ใช้ Placeholder และระบุว่า Developer ต้องเติมค่าเอง”

🔐 Authentication Documentation

API อาจใช้

  • API Key
  • Bearer Token
  • OAuth
  • Session
  • Signed Request
  • Authentication แบบอื่น

Documentation ควรบอก

  1. ใช้วิธีใด
  2. Credential ส่งที่ไหน
  3. Header ชื่ออะไร
  4. Credential หมดอายุหรือไม่
  5. วิธี Refresh ตามระบบจริง

ตัวอย่างรูปแบบทั่วไป

Authorization: Bearer YOUR_ACCESS_TOKEN

🚨 ห้ามใช้ Token จริง

ตัวอย่างต้องใช้ Placeholder เช่น

YOUR_ACCESS_TOKEN

ไม่ใช่ Credential จาก Production

🛡️ Authentication กับ Permission ต้องแยกกัน

API บาง Endpoint ต้องเพียง Login

บาง Endpoint ต้องเป็น Admin

ดังนั้น Documentation ควรมี

Authentication: Required
Permission: Admin

ไม่ใช่เขียนเพียง

Requires authentication

แล้วปล่อยให้ Developer เดาสิทธิ์

📍 Path Parameter คืออะไร

ตัวอย่าง Endpoint

GET /api/products/{id}

id คือ Path Parameter

Documentation ควรระบุ

ParameterTypeRequiredDescription
idintegerYesรหัสสินค้า

ตัวอย่าง Request

GET /api/products/123

Gemini สามารถสร้างตารางได้ แต่ Type ต้องตรวจจาก Route Validation, Schema หรือ Database Model จริง

🔎 Query Parameter คืออะไร

ตัวอย่าง

GET /api/products?page=2&limit=20

Documentation ควรบอก

ParameterTypeRequiredDefaultDescription
pageintegerNo1หน้าที่ต้องการ
limitintegerNo20จำนวนรายการต่อหน้า

อย่าให้ Gemini เดา Default

ต้องดูจาก Code

เช่น

const page = Number(req.query.page ?? 1);

จึงยืนยัน Default ได้ว่า 1

📦 Request Body Documentation

ตัวอย่าง API เพิ่มสินค้า

POST /api/products

Request

{
  "name": "Wi-Fi Router",
  "price": 2500,
  "stock": 10
}

Documentation ควรแยก

  • Required
  • Optional
  • Type
  • Format
  • Validation
  • Constraint

เช่น

FieldTypeRequiredDescription
namestringYesชื่อสินค้า
pricenumberYesราคาสินค้า
stockintegerYesจำนวนสินค้า

หาก Code มี Validation เช่น

price > 0

ควรระบุด้วย

⚠️ อย่าให้ Gemini เดา Validation

สมมติ Schema มีเพียง

name: string

อย่าให้ Gemini เขียนว่า

Maximum length: 100 characters

ถ้าไม่มีหลักฐานใน Code

Prompt ที่ดีคือ

“แสดงเฉพาะ Validation ที่ยืนยันได้จาก Schema หรือ Validation Code”

หากไม่มีให้เขียน

Maximum length: Not specified

ดีกว่าการเดา

📤 Response Documentation

ตัวอย่าง

{
  "id": 123,
  "name": "Wi-Fi Router",
  "price": 2500,
  "stock": 10
}

Documentation ควรอธิบาย Response Field เช่น

FieldTypeDescription
idintegerรหัสสินค้า
namestringชื่อสินค้า
pricenumberราคาสินค้า
stockintegerจำนวนคงเหลือ

ถ้ามี Wrapper

{
  "data": {
    "id": 123
  }
}

ต้อง Document ตาม Response จริง ไม่ควรย่อให้ดูสวยแต่ผิด Contract

❌ Error Documentation สำคัญมาก

Documentation ที่มีแต่ Success Response ยังไม่พอ

ควรอธิบาย Error เช่น

400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
409 Conflict
422 Validation Error
500 Internal Server Error

แต่ Error Code ที่ใช้จริงต้องตรวจจาก Application

อย่าใส่ทุก HTTP Status ที่รู้จักลงไปโดยไม่มีหลักฐาน

🧾 ตัวอย่าง Error Response

สมมติระบบตอบ

{
  "error": {
    "code": "PRODUCT_NOT_FOUND",
    "message": "Product not found"
  }
}

Documentation ควรเก็บ Structure นี้ไว้

ไม่ควรเปลี่ยนเป็น

{
  "message": "Not found"
}

เพียงเพื่อให้ตัวอย่างสั้น

API Documentation ต้องสะท้อน Contract จริง

🔄 ตรวจ Central Error Handler

หลาย Framework มี Error Handler กลาง

เช่น

Route
↓
Controller
↓
Service
↓
Error
↓
Global Error Handler

ถ้า Gemini อ่านเพียง Controller อาจพลาด Response Error จริง

Prompt

“ค้นหา Global Error Handler ก่อนสร้าง Error Documentation และตรวจว่า Exception ถูกแปลงเป็น HTTP Status อย่างไร”

นี่เป็นขั้นตอนสำคัญมาก

📄 Pagination Documentation

API รายการข้อมูลมักมี Pagination

ตัวอย่าง Response

{
  "data": [],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 250
  }
}

Documentation ต้องอธิบาย

  • page
  • limit
  • total
  • จำนวนหน้าถ้ามี
  • Maximum Limit ถ้ามี

อย่าให้ Gemini สมมติ Maximum เช่น 100 ถ้า Code ไม่ได้กำหนด

↕️ Sorting Documentation

ตัวอย่าง

GET /api/products?sort=price&order=desc

Documentation ควรบอกค่า Allowed

เช่น

sort:
name
price
created_at

ถ้า Backend ใช้ Allowlist

แต่หากไม่พบ Allowlist ควร Review Security เพิ่ม เพราะ Dynamic Sort Field สามารถสร้างปัญหาได้ตาม Implementation

🔍 Filtering Documentation

ตัวอย่าง

GET /api/products?category=router&min_price=1000

Gemini สามารถช่วยสร้าง Filter Table จาก Query Parsing Code

Prompt

“ค้นหา Query Parameter ที่ถูกอ่านจาก Request จริง แล้วสร้าง Filter Documentation จาก Code เท่านั้น”

ช่วยป้องกันการสร้าง Filter ที่ API ไม่มี

📅 Date และ Time ต้องระบุ Format

ถ้า API รับ Date ควรระบุ Format เช่นตาม Contract ของระบบ

ตัวอย่าง

2026-09-02

หรือ Date-Time

2026-09-02T10:30:00Z

ต้องดูว่า API ใช้

  • Date
  • Date-Time
  • Time Zone
  • UTC
  • Local Time

อย่างไรจริง

อย่าปล่อยให้ Gemini เปลี่ยน Date Format เอง

🔢 Enum ต้อง Document

ตัวอย่าง Status

pending
processing
completed
cancelled

Documentation ควรระบุ Allowed Value ชัด

เช่น

{
  "status": "completed"
}

Prompt

“ค้นหา Enum หรือ Allowlist ทั้งหมดที่ใช้ใน Request แล้ว Document Allowed Values”

ช่วยลด Error ของ Developer ที่เรียก API

📋 Optional กับ Nullable ไม่เหมือนกัน

Field อาจเป็น

Optional

ไม่ส่งก็ได้

Nullable

ส่งได้แต่ค่าเป็น null

ตัวอย่าง

{
  "middle_name": null
}

Documentation ควรแยกสองแนวคิดนี้หาก API Contract มีความแตกต่าง

Gemini อาจรวมสองอย่างเข้าด้วยกันหากไม่สั่งตรวจ Schema ให้ละเอียด

🧩 Nested Object ต้องอธิบาย

ตัวอย่าง

{
  "customer": {
    "id": 10,
    "name": "Somchai"
  }
}

Documentation ไม่ควรบอกเพียง

customer: object

ถ้า Developer ต้องใช้ Field ภายใน

ควร Document Nested Schema ต่อ

📚 Array Response ต้องมี Item Schema

ตัวอย่าง

{
  "data": [
    {
      "id": 1,
      "name": "Router"
    },
    {
      "id": 2,
      "name": "Switch"
    }
  ]
}

ควรอธิบายว่า

data = array of Product

และ Product มี Field อะไร

Gemini สามารถช่วยสร้าง Reusable Schema เพื่อลดเอกสารซ้ำ

🧱 Reusable Schema มีประโยชน์อย่างไร

ถ้า Product ปรากฏ 20 Endpoint ไม่จำเป็นต้องอธิบาย Field ใหม่ทุก Endpoint

สามารถกำหนด Schema กลาง

Product
- id
- name
- price
- stock

แล้ว Endpoint อ้าง Schema นี้

แนวคิดนี้ใช้ได้ทั้ง Documentation ธรรมดาและ OpenAPI

🔧 Gemini สร้าง OpenAPI Specification ได้ไหม

ได้ สามารถให้ Geminiช่วย Draft OpenAPI Specification จาก Source Code หรือ API Inventory ได้

ตัวอย่าง Prompt

“จาก API Inventory ที่ยืนยันแล้ว สร้าง OpenAPI 3.x Specification

กฎ:

  • ห้ามสร้าง Endpoint เพิ่ม
  • ใช้ Schema จาก Code
  • Required Field ต้องตรง Validation
  • Security Scheme ต้องตรงระบบจริง
  • Error Response ต้องตรง Error Handler
  • ถ้าข้อมูลไม่ยืนยันให้ใส่ TODO แทนการเดา”

นี่เป็นวิธีที่ปลอดภัยกว่าขอ OpenAPI จาก Source Code โดยตรงในครั้งเดียว

📝 ตัวอย่าง OpenAPI แบบย่อ

ตัวอย่างโครงสร้าง

openapi: 3.0.0

info:
  title: Products API
  version: 1.0.0

paths:
  /products:
    get:
      summary: List products
      responses:
        "200":
          description: Successful response

นี่เป็นเพียงตัวอย่างโครงสร้าง

สำหรับ Project จริงควรใช้ OpenAPI Version และ Style ที่ Project กำหนดอยู่แล้ว

ถ้ามี Specification เดิม อย่าเปลี่ยน Version เองเพียงเพราะ Gemini แนะนำ

⚠️ OpenAPI ที่ Gemini สร้างอาจ Validate ไม่ผ่าน

ปัญหาที่อาจพบ เช่น

  • YAML Syntax
  • $ref ผิด
  • Required Field ผิดตำแหน่ง
  • Schema Type ไม่ตรง
  • Security Scheme ไม่ครบ
  • Response Reference ไม่มี
  • Path Parameter ไม่ได้ประกาศ

ดังนั้นหลัง Generate ควรใช้ OpenAPI Validator หรือ Toolchain ของ Project ตรวจอีกครั้ง

🧪 Contract Test สำคัญอย่างไร

Documentation บอกว่า API ตอบ

{
  "id": 1,
  "name": "Router"
}

แต่ API จริงอาจตอบ

{
  "product_id": 1,
  "product_name": "Router"
}

นี่คือ Documentation Drift

Contract Test สามารถช่วยตรวจว่า API Behavior ยังตรงกับ Contract ที่ประกาศไว้หรือไม่

Gemini สามารถช่วยสร้าง Draft Test ได้ แต่ Test ต้อง Run กับระบบจริง

🔄 Documentation Drift คืออะไร

เกิดเมื่อ

Code เปลี่ยน
แต่ Documentation ไม่เปลี่ยน

ตัวอย่าง

เดิม

limit default = 20

Developer เปลี่ยนเป็น

limit default = 50

แต่ Documentation ยังเขียน 20

นี่ทำให้ Developer ที่ใช้ API เข้าใจผิด

🔍 ใช้ Gemini ตรวจ Documentation Drift

สามารถส่ง

  • Current Documentation
  • Current Source Code

แล้วถาม

“เปรียบเทียบ API Documentation กับ Code ปัจจุบัน แล้วแสดงเฉพาะจุดที่ไม่ตรงกัน

แบ่งเป็น:

  1. Endpoint หาย
  2. Endpoint ใหม่
  3. Parameter เปลี่ยน
  4. Required เปลี่ยน
  5. Response เปลี่ยน
  6. Error เปลี่ยน
  7. Authentication เปลี่ยน”

วิธีนี้เหมาะมากกับ Project ที่ Documentation ไม่ได้ Update มานาน

🐙 ต้อง Import Repository ใหม่เมื่อ Code เปลี่ยน

เนื่องจาก Repository ที่นำเข้า Gemini ไม่ Sync อัตโนมัติ หากต้องการตรวจ Documentation Drift หลัง Code ถูก Update ควรตรวจว่า Gemini ได้ Context Version ใหม่ก่อน

ไม่เช่นนั้นอาจกลายเป็นการเปรียบเทียบ

Documentation ใหม่
กับ
Code Snapshot เก่า

ซึ่งทำให้ผล Review ผิดได้

🧪 ตัวอย่าง Request ควรมาจาก Contract

สมมติ API

POST /api/products

ตัวอย่าง

POST /api/products
Content-Type: application/json
Authorization: Bearer YOUR_ACCESS_TOKEN

Body

{
  "name": "Wi-Fi Router",
  "price": 2500,
  "stock": 10
}

ตัวอย่างควร

  • ใช้ Field จริง
  • ใช้ Type จริง
  • ไม่ใส่ Secret จริง
  • ไม่ใส่ข้อมูลลูกค้าจริง

💻 สร้าง cURL Example ด้วย Gemini

Prompt

“สร้าง cURL Example จาก Endpoint นี้โดยใช้ Placeholder Credential และห้ามใช้ข้อมูลจริง”

ตัวอย่าง

curl -X GET \
  "https://YOUR_API_HOST/api/products" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

cURL เหมาะกับ Documentation เพราะ Developer สามารถเข้าใจ HTTP Request ได้ค่อนข้างตรง

🐍 สร้าง Python Example

สามารถให้ Gemini สร้าง SDK-like Example

เช่น

import requests

response = requests.get(
    "https://YOUR_API_HOST/api/products",
    headers={
        "Authorization": "Bearer YOUR_ACCESS_TOKEN",
    },
    timeout=10,
)

response.raise_for_status()

print(response.json())

แต่ไม่จำเป็นต้องมีตัวอย่างทุกภาษา

ควรเลือกตามกลุ่มผู้ใช้ API จริง

🟨 สร้าง JavaScript Example

ตัวอย่าง

const response = await fetch(
  "https://YOUR_API_HOST/api/products",
  {
    headers: {
      Authorization: "Bearer YOUR_ACCESS_TOKEN",
    },
  }
);

if (!response.ok) {
  throw new Error(`Request failed: ${response.status}`);
}

const data = await response.json();

ควรบอกด้วยว่าตัวอย่างนี้สำหรับ Environment ใด

  • Browser
  • Node.js
  • Server

เพราะ Secret Management ต่างกัน

🚫 อย่าใส่ API Key จริงใน Documentation

Documentation อาจถูก

  • Commit GitHub
  • แชร์ทีม
  • Publish Public
  • Index Search Engine
  • ส่งให้ลูกค้า

ดังนั้น Credential ตัวอย่างต้องใช้

YOUR_API_KEY
YOUR_ACCESS_TOKEN
CLIENT_ID
CLIENT_SECRET

แทนค่าจริง

หาก Secret จริงเคยถูกใส่ใน Docs ควรพิจารณา Rotate Credential ด้วย

🔒 อย่าเผย Internal Endpoint โดยไม่ตั้งใจ

ก่อน Publish Documentation ต้องตรวจว่า Endpoint ใดเป็น

  • Public
  • Partner
  • Internal
  • Admin
  • Debug

อย่าให้ Gemini รวมทุก Route แล้ว Publish เป็น Public Documentation โดยอัตโนมัติ

Prompt

“แยก Endpoint เป็น Public, Authenticated, Admin และ Internal ก่อนสร้าง Documentation สำหรับภายนอก”

🛡️ อย่าเผย Security Detail เกินจำเป็น

API Documentation ต้องเพียงพอให้ใช้งาน

แต่ไม่ควรเปิดเผย

  • Internal Secret
  • Database Credential
  • Private Network
  • Debug Endpoint
  • Infrastructure Detail ที่ไม่จำเป็น
  • Sensitive Internal Error
  • Production Configuration

การสร้าง Docs จาก Repository ควรมี Human Review ก่อน Publish เสมอ

🧠 Gemini อาจสร้าง Example ที่ API จริงไม่รองรับ

ตัวอย่าง API มี Field

{
  "include_deleted": true
}

ทั้งที่ Code ไม่มี Field นี้

นี่คือ Hallucination ที่อันตรายกับ Documentation

วิธีป้องกันคือ Prompt

“ทุก Parameter และ Field ต้องมีหลักฐานจาก Route, Schema, Type หรือ Validation Code ถ้าไม่มีห้ามเพิ่ม”

📂 Trace จาก Route ไปถึง Schema

API Documentation ที่แม่นควรตรวจหลาย Layer

Route
↓
Middleware
↓
Controller
↓
Validation Schema
↓
Service
↓
Model
↓
Response Serializer

ถ้าอ่านเพียง Route จะรู้เพียง Method และ Path

ถ้าอ่าน Controller อย่างเดียวอาจไม่รู้ Validation

ถ้าอ่าน Model อย่างเดียวอาจไม่รู้ Response Serializer

ดังนั้น API Docs ที่แม่นต้อง Trace Flow

🔐 Middleware สำคัญต่อ Documentation

ตัวอย่าง

POST /admin/products
↓
authenticate()
↓
requireAdmin()
↓
controller

Documentation ต้องเขียน

Authentication: Required
Role: Admin

หาก Gemini ไม่อ่าน Middleware อาจเขียน Permission ผิด

🧾 Response Serializer สำคัญ

Database Model อาจมี

password_hash
internal_note
created_by

แต่ API Serializer ไม่ส่ง Field เหล่านั้นกลับ

หาก Gemini สร้าง Response Schema จาก Database Model โดยตรง อาจทำ Documentation ผิดและอาจเปิดเผย Field ภายใน

ต้องตรวจ Response Serialization จริง

📊 API Rate Limit Documentation

ถ้าระบบมี Rate Limit ควรอธิบาย

  • Limit
  • Window
  • Scope
  • Header
  • Response เมื่อเกิน Limit

แต่ห้ามเดาตัวเลข

หาก Code ไม่ระบุชัด ให้เขียน

Rate limit: Check deployment configuration

แทนการสร้างเลขสมมติ

⏱️ Timeout Documentation

API บางประเภทใช้เวลานาน

เช่น

  • Video Processing
  • AI Generation
  • Report Generation

ควรบอกว่า API

  • Sync
  • Async
  • Polling
  • Webhook

อย่างไร

Gemini สามารถ Trace Job Queue หรือ Status Endpoint เพื่อช่วยสร้าง Flow Documentation ได้

📨 Webhook Documentation

หากระบบมี Webhook ควร Document

  • Event
  • Payload
  • Signature
  • Retry
  • Expected Status
  • Duplicate Delivery

Prompt

“ค้นหา Webhook Handler และสร้าง Event Documentation จาก Code โดยตรวจ Signature Verification และ Retry Behavior”

Webhook ควรคิดเรื่อง Idempotency ด้วย เพราะ Event อาจถูกส่งซ้ำตามระบบ

🔄 API Versioning

ระบบอาจใช้

/v1/products
/v2/products

หรือ Version ผ่าน Header

Documentation ต้องระบุ Strategy จริง

อย่าให้ Gemini เพิ่ม /v1 เพียงเพราะเป็นรูปแบบที่นิยม

ถ้า Source ไม่มี Version ควร Document ตามความจริง

📜 Changelog ควรมีอะไร

API Changelog อาจระบุ

Added
Changed
Deprecated
Removed
Fixed

ตัวอย่าง

Added:
GET /api/products/{id}

Changed:
limit default from 20 to 50

Deprecated:
legacy product search

Gemini สามารถช่วยสรุป Diff ระหว่าง API Version ได้ หากมี Code หรือ Specification สอง Version ให้เทียบ

⚠️ Gemini Import GitHub ไม่เห็น Commit History

การ Import GitHub Repository ใน Gemini ไม่ได้ให้ความสามารถอ่าน Commit History, Pull Request หรือ Metadata ในลักษณะเดียวกับ Git Tool เต็มรูปแบบ

ดังนั้นอย่าสั่ง

“สร้าง Changelog จาก Commit History”

หาก Gemini ไม่มีข้อมูล Commit จริง

ควรให้

  • Git Diff
  • Release Notes
  • Old Spec
  • New Spec

เป็น Context แทน

📝 README กับ API Documentation ต่างกันอย่างไร

README มักเน้น

  • Project คืออะไร
  • Install
  • Setup
  • Run
  • Development

API Documentation เน้น

  • Endpoint
  • Authentication
  • Request
  • Response
  • Error

ทั้งสองสามารถเชื่อมกันได้ แต่ไม่ควรยัด Endpoint หลายร้อยรายการไว้ใน README จนอ่านยาก

🚀 Getting Started สำคัญกับ API Docs

Developer ควรสามารถเรียก API แรกได้เร็ว

ตัวอย่าง Flow

รับ Credential
↓
ตั้ง Base URL
↓
เรียก Health Endpoint
↓
เรียก Endpoint แรก
↓
อ่าน Response

Prompt

“สร้าง Getting Started ที่ช่วย Developer ส่ง Request แรกได้ภายในไม่กี่ขั้น โดยใช้เฉพาะ Endpoint ที่มีอยู่จริง”

💡 Gemini ช่วยเขียน Tutorial จาก API ได้

นอกจาก Reference Documentation สามารถสร้าง Tutorial

เช่น

“วิธีสร้าง Product ด้วย API”

ขั้นตอน

  1. Authentication
  2. Prepare Body
  3. POST
  4. Read Response
  5. Handle Error

Tutorial อธิบาย Workflow

ส่วน Reference Documentation อธิบาย Contract

ควรมีทั้งสองแบบเมื่อ API มีความซับซ้อน

🆚 Reference กับ Guide ต่างกัน

API Reference

ตอบ

Endpoint นี้รับอะไร

Guide

ตอบ

จะใช้หลาย Endpoint ร่วมกันเพื่อทำงานนี้อย่างไร

Gemini สามารถช่วยสร้างทั้งสอง แต่ต้องกำหนด Output ให้ชัด

🧩 ใช้ Canvas สร้าง API Documentation

Gemini Canvas รองรับการสร้างและแก้เอกสารและ Code

จึงสามารถใช้สร้าง Draft Documentation แล้วปรับต่อ เช่น

“สร้าง API Reference จาก Inventory นี้”

จากนั้น

“เพิ่ม Authentication Section”

“เพิ่ม Error Table”

“ย่อ Getting Started”

“เพิ่มตัวอย่าง cURL”

หรือเปิด Code/เอกสารที่เกี่ยวข้องเพื่อแก้ตาม Workflow ที่รองรับ

Canvas เหมาะกับการ Iteration มากกว่าขอเอกสารทั้งหมดใหม่ทุกครั้ง

🔍 ใช้ Gemini Review Documentation ก่อน Publish

Prompt

“Review API Documentation นี้โดยตรวจ:

  1. Endpoint ครบหรือไม่
  2. Method ถูกหรือไม่
  3. Path ถูกหรือไม่
  4. Authentication
  5. Parameter
  6. Required Field
  7. Response
  8. Error Code
  9. ตัวอย่าง
  10. Secret
  11. Internal Information

เทียบกับ Source Code ที่แนบ และแสดงเฉพาะ Difference”

นี่เป็นขั้นตอนสำคัญก่อน Publish

🧪 ทดสอบ Example ทุกตัว

ถ้า Documentation มี

  • cURL
  • Python
  • JavaScript
  • PHP

ควร Run อย่างน้อยตัวอย่างหลักกับ Test Environment

เพราะ Gemini อาจสร้าง

  • Header ผิด
  • Endpoint ผิด
  • JSON ผิด
  • Parameter ผิด
  • SDK API เก่า

Documentation ที่ Copy แล้ว Run ไม่ได้สร้างประสบการณ์ไม่ดีให้ Developer มาก

📋 API Documentation Checklist

ก่อน Publish ควรตรวจ

✅ Overview

API ทำอะไรชัด

✅ Base URL

ถูก Environment

✅ Authentication

วิธีส่ง Credential ถูก

✅ Endpoint

ครบ

✅ Method

ตรงกับ Code

✅ Parameter

Type และ Required ถูก

✅ Request

ตรง Validation

✅ Response

ตรง Serializer

✅ Error

ตรง Error Handler

✅ Pagination

ตรง Code

✅ Example

Run ได้

✅ Secret

ไม่มี Credential จริง

✅ Internal API

ไม่ได้ Publish โดยไม่ตั้งใจ

✅ Version

ถูกต้อง

✅ Changelog

Update ตาม Release

🚫 10 ข้อผิดพลาดเมื่อใช้ Gemini สร้าง API Documentation

❶ ให้สร้าง Docs ก่อนอ่าน Code

AI ต้องเดา

❷ ไม่สร้าง API Inventory

ตรวจ Endpoint ยาก

❸ ไม่อ่าน Validation Schema

Required Field ผิด

❹ ไม่อ่าน Middleware

Authentication ผิด

❺ สร้าง Response จาก Database Model

อาจมี Field ไม่ได้ถูกส่งจริง

❻ ไม่อ่าน Global Error Handler

Error Documentation ผิด

❼ ใส่ Secret จริงใน Example

เสี่ยง Credential รั่ว

❽ ใช้ Repository Snapshot เก่า

Docs ไม่ตรง Code ใหม่

❾ ไม่ Run ตัวอย่าง

Developer Copy แล้วใช้ไม่ได้

❿ Publish โดยไม่มี Human Review

Hallucination อาจหลุดสู่เอกสารจริง

🪜 Workflow ใช้ Gemini สร้าง API Documentation

แนวทางที่แนะนำคือ

❶ นำ Source Code เข้า Gemini

เฉพาะ Context ที่จำเป็น

❷ อ่าน Architecture

Route, Controller, Service, Schema

❸ สร้าง API Inventory

ยังไม่เขียน Docs

❹ ตรวจ Authentication

Middleware และ Permission

❺ ตรวจ Validation

Required, Type, Constraint

❻ Trace Response

Serializer และ Error Handler

❼ สร้าง Documentation Draft

Endpoint ทีละกลุ่ม

❽ สร้าง Example

ใช้ข้อมูลจำลอง

❾ สร้าง OpenAPI Draft

ถ้า Project ต้องการ

❿ Validate Spec

ด้วย Tool ที่เหมาะสม

⓫ Run Examples

กับ Test Environment

⓬ เปรียบเทียบ Code กับ Docs

หา Documentation Drift

⓭ Security Review

ลบ Secret และ Internal Detail

⓮ Publish

หลัง Review

⓯ Update ทุก Release

ให้ Documentation อยู่กับ Code

สำหรับ API ที่เกี่ยวข้องกับระบบของ comsiam แนวทางนี้ช่วยลดปัญหาที่เอกสารดูดีแต่ไม่ตรงกับระบบจริง เพราะทุก Endpoint และ Field ถูกย้อนกลับไปตรวจจาก Source Code ได้

💡 10 Prompt ใช้ Gemini สร้าง API Documentation

❶ API Inventory

“อ่าน Repository นี้และสร้าง API Inventory ก่อน ห้ามสร้าง Documentation”

❷ Route Mapping

“จับคู่ Route → Middleware → Controller → Service → Schema สำหรับแต่ละ Endpoint”

❸ Authentication

“ค้นหา Authentication และ Authorization Requirement ของ Endpoint ทั้งหมด”

❹ Request Schema

“สร้าง Request Field Table จาก Validation Code เท่านั้น ห้ามเดา Constraint”

❺ Response

“สร้าง Response Documentation จาก Serializer หรือ Response Code จริง”

❻ Error

“อ่าน Global Error Handler แล้วสร้าง Error Documentation ที่ตรงกับระบบ”

❼ OpenAPI

“สร้าง OpenAPI Draft จาก Inventory ที่ยืนยันแล้ว และใส่ TODO ถ้าข้อมูลไม่ครบ”

❽ Examples

“สร้าง cURL Example โดยใช้ Placeholder Credential และข้อมูลจำลอง”

❾ Drift

“เปรียบเทียบ Documentation กับ Code ปัจจุบันและแสดงเฉพาะ Difference”

❿ Final Review

“ตรวจ Docs เทียบ Source อีกครั้ง โดยเน้น Method, Field, Permission, Error และ Secret”

❓ คำถามที่พบบ่อย

Gemini สร้าง API Documentation ได้ไหม

ได้ Gemini สามารถช่วยอ่านข้อความจาก Source Code, Route, Schema และ API Specification แล้วสร้าง Draft API Documentation พร้อมตัวอย่าง Request/Response ได้

Gemini สร้าง OpenAPI ได้ไหม

ได้ สามารถช่วย Draft OpenAPI Specification จาก API Inventory หรือ Source Code แต่ต้อง Validate Specification และตรวจเทียบกับ API จริงก่อนใช้งาน

Gemini อ่าน API ทั้งโปรเจกต์ได้ไหม

สามารถใช้ Code Folder หรือ Import GitHub Repository เพื่อช่วยให้ Gemini เข้าใจ Codebase หลายไฟล์ได้ โดยข้อจำกัดของ Context และฟีเจอร์ขึ้นอยู่กับ Gemini Apps ที่ใช้งาน

Gemini รู้ Authentication ของ API อัตโนมัติไหม

ไม่ควรสมมติว่า AI รู้ ต้องให้ Gemini Trace Middleware, Route และ Authentication Code จริงก่อนสร้าง Documentation

Documentation ที่ Gemini สร้างถูกต้อง 100% ไหม

ไม่ควรถือว่าถูกต้อง 100% AI สามารถสร้าง Field, Parameter หรือ Error ที่ไม่มีอยู่จริงได้ จึงต้อง Review กับ Source Code และ Test API จริง

ควรอัปเดต Documentation เมื่อไร

ควร Update เมื่อ API Contract เปลี่ยน เช่น Endpoint, Parameter, Response, Authentication, Error หรือ Version และควรตรวจ Documentation Drift เป็นส่วนหนึ่งของ Release Process

🎯 สรุป

วิธีใช้ Gemini สร้าง API Documentation ให้แม่นที่สุดไม่ควรเริ่มจากการขอให้ AI เขียนเอกสารทันที แต่ควรเริ่มจาก Codebase → API Inventory → Route → Middleware → Validation → Response → Error Handler → Documentation

Gemini สามารถช่วยสร้าง Endpoint Reference, Authentication Guide, Request/Response Schema, Error Table, cURL Example และ OpenAPI Draft ได้อย่างรวดเร็ว โดยเฉพาะเมื่อใช้ Code Folder หรือ GitHub Repository เป็น Context

แต่ต้องป้องกัน Hallucination ด้วยกฎสำคัญคือ ทุก Endpoint, Parameter, Field และ Constraint ต้องมีหลักฐานจาก Code หรือ Specification จริง หากหาไม่พบให้ระบุว่าไม่ยืนยันแทนการเดา

หลังสร้าง Documentation ควรนำ Example ไป Run, Validate OpenAPI หากมี และเปรียบเทียบเอกสารกับ Source Code อีกครั้งก่อน Publish รวมถึงตรวจว่าไม่มี API Key, Token, Internal Endpoint หรือข้อมูล Sensitive หลุดเข้าไปในเอกสาร

แนวทางของ comsiam คือใช้ Gemini ลดเวลาการทำ API Inventory และเขียน Documentation Draft ส่วน Source Code และ Runtime จริงยังคงเป็น Source of Truth ที่ใช้ตัดสินว่า API Contract ถูกต้องหรือไม่