คุณมีไฟล์ OpenAPI และต้องการสร้างเอกสารจากไฟล์นั้นโดยไม่ต้องตั้งค่าบริการ เข้าสู่ระบบพอร์ทัล หรือเพิ่มขั้นตอน build ที่ดึง dependency จำนวนมาก คุณต้องการเพียงคำสั่งเดียวที่อ่านสเปกและสร้างไฟล์ Markdown หรือหน้า HTML เดี่ยวสำหรับโฮสต์ได้ทุกที่
บทความนี้รวมเครื่องมือ CLI ที่เน้นขนาดเล็กและใช้งานตรงไปตรงมา: เป็นไบนารีเดียว, คำสั่ง npx บรรทัดเดียว, หรือแพ็กเกจที่ติดตั้งครั้งเดียวแล้วใช้ใน CI ได้ทันที บางตัวสร้าง Markdown เพื่อนำไปใช้กับเว็บไซต์เอกสารที่มีอยู่ บางตัวสร้าง HTML แบบสแตนด์อโลน
หากต้องการดูแพลตฟอร์มเอกสาร API ที่มี GUI เพิ่มเติม ดูบทสรุป เครื่องมือจัดทำเอกสาร REST API ยอดนิยม สำหรับรูปแบบและฟิลด์ที่เครื่องมือเหล่านี้อ่าน ให้ยึด OpenAPI Specification เป็นแหล่งอ้างอิงหลัก
อะไรที่ทำให้เครื่องมือ CLI “น้ำหนักเบา” สำหรับการจัดทำเอกสาร API
คำว่า “น้ำหนักเบา” ไม่ได้หมายถึงประสิทธิภาพต่ำ แต่หมายถึงลดขนาดการติดตั้งและลดขั้นตอนใน workflow โดยพิจารณาจาก 4 เรื่องต่อไปนี้
ขนาดการติดตั้งและ dependency
ไบนารีเดียวหรือแพ็กเกจ npm เดียวมักเหมาะกว่าเฟรมเวิร์กเต็มรูปแบบ หากต้องติดตั้ง language runtime, bundler และ plugin system เพียงเพื่อสร้างหน้าเอกสาร เครื่องมือนั้นไม่ใช่ตัวเลือกที่เบาเริ่มต้นได้เร็วและตั้งค่าน้อย
เครื่องมือควรอ่านopenapi.yamlและสร้างผลลัพธ์ได้ทันที เช่น:
tool openapi.yaml -o api-docs.md
มีหน้าที่เดียวชัดเจน
รับ OpenAPI spec แล้วสร้างเอกสารเป็น Markdown หรือ HTML ผลลัพธ์ที่จำกัดขอบเขตช่วยให้คำสั่งคาดเดาได้ง่ายใน local environment และ CIรันได้ทุกที่
ไม่ต้องใช้ GUI, ไม่ต้องดูแลเซิร์ฟเวอร์ และไม่ควรขึ้นกับขั้นตอน manual หลายจุด เครื่องมือควรทำงานเหมือนกันทั้งบนเครื่องนักพัฒนาและใน pipeline
หากกำลังมองหาตัวเลือกที่ไม่มีค่าใช้จ่ายในวงกว้าง ดู เครื่องมือจัดทำเอกสาร API ฟรี ได้เช่นกัน
Widdershins
Widdershins เป็นตัวเลือกที่เล็กที่สุดในรายการนี้ เป็นแพ็กเกจ npm เดียวสำหรับแปลง OpenAPI 3, Swagger 2 หรือ AsyncAPI เป็น Markdown โดยไม่เรนเดอร์เว็บไซต์และไม่เปิดเซิร์ฟเวอร์
ติดตั้งและสร้าง Markdown
npm install -g widdershins
widdershins openapi.yaml -o api-docs.md
ผลลัพธ์คือไฟล์ api-docs.md ที่สามารถ commit เข้าสู่ repository, review ผ่าน diff และนำไปใช้กับ static site generator ได้
ตัวเลือกที่ใช้บ่อย
# ตัด YAML front matter ออกจากผลลัพธ์
widdershins openapi.yaml -o api-docs.md --omitHeader
# ระบุภาษาใน code samples
widdershins openapi.yaml -o api-docs.md --language_tabs 'shell:Shell' 'javascript:JavaScript'
Markdown ที่สร้างขึ้นเข้ากันได้กับ Slate จึงสามารถใช้ Widdershins เป็นขั้นตอนแปลง spec ก่อนส่งต่อไปยัง static documentation site ได้
เหมาะสำหรับ: แปลง spec เป็น Markdown อย่างรวดเร็วเพื่อ commit หรือใช้ในระบบเอกสารเดิม
ข้อจำกัด: ได้เฉพาะ Markdown ไม่มี UI แบบ interactive, ไม่มี “Try it” panel และไม่มีหน้าเว็บที่พร้อมโฮสต์ คุณต้องใช้ตัวเรนเดอร์หรือ static site generator เพิ่มเติมหากต้องการเว็บไซต์เอกสาร
OpenAPI Generator (ตัวสร้างเอกสาร)
OpenAPI Generator เป็นที่รู้จักจากการสร้าง client SDK แต่ยังมี generator สำหรับเอกสารด้วย:
-
markdownสร้างโฟลเดอร์ Markdown -
html2สร้างหน้า HTML แบบสแตนด์อโลน
ติดตั้งและใช้งาน
npm install -g @openapitools/openapi-generator-cli
# สร้างเอกสาร Markdown
openapi-generator-cli generate -g markdown -i openapi.yaml -o docs/
# สร้างเอกสาร HTML
openapi-generator-cli generate -g html2 -i openapi.yaml -o docs-html/
ตรวจสอบผลลัพธ์หลัง build:
find docs -maxdepth 2 -type f
find docs-html -maxdepth 2 -type f
npm wrapper จะดาวน์โหลด JAR ที่ใช้ JDK อยู่เบื้องหลังในการรันครั้งแรก ดังนั้นจึงหนักกว่า Widdershins ช่วงเริ่มต้น แต่หลังจากนั้นสามารถเรียกผ่านคำสั่งเดิมใน CI ได้
เหมาะสำหรับ: โปรเจกต์ที่ใช้ OpenAPI Generator เพื่อสร้าง SDK อยู่แล้ว และต้องการสร้างเอกสารจาก spec เดียวกัน
ข้อจำกัด: ผลลัพธ์เป็น template-based และการรันครั้งแรกต้องดาวน์โหลด JAR จึงไม่ใช่ตัวเลือกแบบไบนารีเดี่ยวอย่างแท้จริง
Redocly CLI (build-docs)
หากต้องการหน้า HTML แบบสแตนด์อโลนที่พร้อมแชร์ด้วยคำสั่งเดียว Redocly CLI เป็นตัวเลือกที่ตรงที่สุด คำสั่ง build-docs จะ bundle OpenAPI spec เข้าเป็น HTML ไฟล์เดียวที่ใช้ Redoc
สร้างหน้าเอกสาร
npx @redocly/cli build-docs openapi.yaml
โดยค่าเริ่มต้น คำสั่งจะสร้างไฟล์ redoc-static.html
ระบุชื่อไฟล์ผลลัพธ์เองได้ด้วย --output:
npx @redocly/cli build-docs openapi.yaml --output api.html
จากนั้นเปิดไฟล์ใน browser หรือ deploy ไปยัง static host ได้ทันที:
open api.html
เนื่องจากใช้ npx คุณจึงทดลองใช้งานได้โดยไม่ต้องติดตั้ง global package
เหมาะสำหรับ: สร้างหน้า API reference เดี่ยวที่ดูพร้อมใช้งานจาก OpenAPI spec
ข้อจำกัด: ผลลัพธ์เป็น HTML หน้าเดียว เหมาะกับ API reference มากกว่าพอร์ทัลเอกสารหลายหน้า การปรับธีมและตัวอย่างที่ละเอียดขึ้นอาจอยู่ในระดับชำระเงินของ Redocly
หากกำลังเปรียบเทียบตัวเรนเดอร์ประเภทเดียวกัน ดู ทางเลือก Redocly และ ทางเลือก Scalar
Slate
Slate แตกต่างจากเครื่องมืออื่นในรายการ เพราะไม่ได้แปลง OpenAPI spec เป็นเอกสารโดยตรง แต่เป็น static site generator สำหรับเอกสาร API ที่เขียนด้วย Markdown
Slate สร้าง layout แบบสามคอลัมน์:
- navigation
- เนื้อหาเอกสาร
- code samples ด้านข้าง
Slate ใช้ Middleman จึงต้องมี Ruby และ Bundler
สร้างเว็บไซต์
หลัง clone repository ของ Slate และติดตั้ง dependencies แล้ว ให้รัน:
bundle exec middleman build
ผลลัพธ์จะอยู่ในโฟลเดอร์ build/ ซึ่งสามารถ deploy ไปยัง static hosting ได้
ls build/
ใช้ร่วมกับ Widdershins
Workflow ที่ใช้งานได้จริงคือ:
# 1. แปลง OpenAPI เป็น Markdown
widdershins openapi.yaml -o source/index.html.md
# 2. ให้ Slate build เว็บไซต์จาก Markdown
bundle exec middleman build
เหมาะสำหรับ: เอกสาร API ที่เขียนและดูแลด้วยมือ ต้องการควบคุมโครงสร้าง เนื้อหา และคำอธิบายเชิง narrative
ข้อจำกัด: เป็นตัวเลือกที่หนักที่สุด เพราะต้องใช้ Ruby tooling และไม่อ่าน OpenAPI โดยตรง หากเอกสารมาจาก spec และแทบไม่ต้องแก้ด้วยมือ ใช้ตัวแปลงหรือ HTML renderer จะเบากว่า
Apidog CLI (export + doc)
เครื่องมือแบบเปิดแต่ละตัวข้างต้นมักครอบคลุมเพียงบางส่วนของ workflow เช่น แปลง spec, เรนเดอร์ HTML หรือสร้าง static site แต่หาก API ของคุณถูกดูแลอยู่ในโปรเจกต์ Apidog อยู่แล้ว การเชื่อมหลายเครื่องมือเข้าด้วยกันอาจไม่จำเป็น
apidog-cli เป็น CLI สำหรับส่งออกโปรเจกต์เป็น Markdown หรือ HTML โดยไม่ต้องสร้าง pipeline แยกระหว่าง converter, renderer และ hosting
ติดตั้งและยืนยันตัวตน
npm install -g apidog-cli
apidog login --with-token <YOUR_TOKEN>
ส่งออกเอกสาร
# ส่งออกเป็น Markdown
apidog export --project <projectId> --format markdown --output ./api-docs.md
# ส่งออกเป็น HTML
apidog export --project <projectId> --format html --output ./api-docs.html
ตรวจสอบว่าไฟล์ถูกสร้างแล้ว:
ls -lh ./api-docs.md ./api-docs.html
จัดการเอกสารผ่าน CLI
apidog doc ใช้จัดการเอกสาร Markdown ของโปรเจกต์ และ apidog docs-site ใช้จัดการเว็บไซต์เอกสารที่เผยแพร่แล้ว
# แสดงรายการเอกสารในโปรเจกต์
apidog doc list --project <projectId>
# แสดงรายการเว็บไซต์เอกสาร
apidog docs-site list --project <projectId>
ผลลัพธ์เป็น JSON ที่มีโครงสร้าง จึงเหมาะสำหรับนำไปใช้ต่อใน script หรือ CI job
สำหรับรายการคำสั่งทั้งหมด ดู คู่มือฉบับสมบูรณ์ของ Apidog CLI
Apidog ไม่ใช่โอเพนซอร์สและไม่ใช่ไบนารีแบบ single-purpose โดย CLI จะสื่อสารกับโปรเจกต์ที่โฮสต์ไว้ นอกจากนี้ CLI ไม่ได้ทำหน้าที่ lint OpenAPI หรือบังคับ style guide ซึ่งเป็นส่วนที่ Redocly และ Spectral รองรับ
อย่างไรก็ตาม หากต้องการเส้นทางเดียวจาก API project ไปยัง Markdown หรือ HTML ที่แชร์ได้ apidog-cli ช่วยลดการต่อ pipeline หลายส่วนด้วยตนเองได้ สำหรับ workflow การส่งออก Markdown โดยเฉพาะ ดู ตัวสร้างเอกสาร API พร้อมการส่งออก Markdown
วิธีการเลือก
เลือกจากรูปแบบ input ที่มีอยู่และ output ที่ต้องการ:
| เครื่องมือ | ดีที่สุดสำหรับ | การติดตั้ง | โอเพนซอร์ส? | ผลลัพธ์ |
|---|---|---|---|---|
| Widdershins | แปลง spec เป็น Markdown อย่างรวดเร็ว | npm i -g widdershins |
ใช่ (MIT) | Markdown |
| OpenAPI Generator | สร้างเอกสารพร้อม SDKs | npm i -g @openapitools/openapi-generator-cli |
ใช่ (Apache 2.0) | Markdown หรือ HTML |
| Redocly CLI | สร้าง HTML หน้าเดียวที่พร้อมแชร์ | npx @redocly/cli |
ใช่ (MIT, open core) | HTML แบบสแตนด์อโลน |
| Slate | สร้างเว็บไซต์เอกสารที่คัดสรรด้วยมือ | Ruby + Bundler | ใช่ (Apache 2.0) | เว็บไซต์สแตติก |
| Apidog CLI | ส่งออกเอกสารจากโปรเจกต์ที่มีอยู่ | npm i -g apidog-cli |
ไม่ (ฟรีเทียร์) | Markdown หรือ HTML |
สรุปการเลือกแบบเร็ว:
- มี OpenAPI spec และต้องการ Markdown สำหรับ commit: ใช้ Widdershins
- ต้องการ HTML หน้าเดียวที่เปิดหรือ deploy ได้ทันที: ใช้ Redocly CLI
- สร้าง SDK อยู่แล้วและต้องการเอกสารจากเครื่องมือเดียวกัน: ใช้ OpenAPI Generator
- ต้องการเขียนเอกสารแบบ narrative ด้วยมือ: ใช้ Slate
- API อยู่ใน Apidog project และต้องการ export ผ่าน CLI: ใช้ Apidog CLI
สำหรับภาพรวมของเครื่องมือที่ไม่มีค่าใช้จ่าย ดู เครื่องมือจัดทำเอกสาร API ฟรี
สรุป
หลักการของเครื่องมือจัดทำเอกสารแบบน้ำหนักเบาคือ เลือกเครื่องมือที่เล็กที่สุดซึ่งสร้างผลลัพธ์ตามที่ต้องการ
- Widdershins เหมาะกับการแปลง spec เป็น Markdown
-
redocly build-docsเหมาะกับการสร้าง HTML หน้าเดียว - OpenAPI Generator เหมาะเมื่อ workflow มีการสร้าง SDK อยู่แล้ว
- Slate เหมาะกับเอกสารที่ต้องเขียนและควบคุมด้วยมือ
-
apidog-cliเหมาะกับการส่งออกเอกสารจาก API project ที่ดูแลอยู่แล้ว
หาก API ของคุณอยู่ในโปรเจกต์ Apidog ให้ ดาวน์โหลด Apidog แล้วลองรัน apidog export ใน CI เพื่อสร้างเอกสารใหม่ทุกครั้งที่ API เปลี่ยนแปลง
Top comments (0)