หากเอกสาร OpenAPI ของคุณอยู่ใน Git repository แต่ทีมยังแก้ไข spec ผ่าน API client แล้วค่อยคัดลอก YAML กลับเข้า repo ด้วยตนเอง เวิร์กโฟลว์นี้เสี่ยงต่อการชนกันของไฟล์, import/export ผิดพลาด, และ spec ใน repo ไม่ตรงกับ spec ที่ทีมใช้งานจริง วิธีที่ปลอดภัยกว่าคือทำให้ Git เป็นแหล่งข้อมูลหลัก แล้วแก้ไข OpenAPI ผ่านเครื่องมือที่ sync กับ repo โดยตรง
บทความนี้จะแสดงขั้นตอนการซิงค์ OpenAPI spec กับ GitHub ด้วย Spec-First Mode ของ Apidog ตั้งแต่เชื่อมต่อ Git provider, เปิดโปรเจกต์จาก repository, แก้ไข YAML, commit และ push กลับไปยัง GitHub โดยไม่ต้อง export/import เอง ขั้นตอนเดียวกันนี้ใช้กับ GitLab ได้ และ Azure DevOps รองรับผ่าน Git Connection
การซิงค์สองทางคืออะไร
การซิงค์สองทางหมายถึงการเปลี่ยนแปลง OpenAPI spec ไหลได้ทั้งสองทิศทางโดยไม่ต้องมีขั้นตอน export/import คั่นกลาง
- จาก Apidog ไปยัง Git: เมื่อคุณแก้ไข OpenAPI ใน Apidog แล้ว commit การเปลี่ยนแปลงจะถูก push ไปยัง repository เป็น Git commit ปกติบน branch ที่เลือก
- จาก Git ไปยัง Apidog: เมื่อเพื่อนร่วมทีมแก้ไข spec จาก IDE แล้ว push ไปยัง branch เดียวกัน Apidog จะดึงการเปลี่ยนแปลงกลับมาให้ editor แสดง spec ล่าสุดจาก repo
แนวคิดคือให้ repository เป็น single source of truth ส่วน Apidog ทำหน้าที่เป็น editor ที่ทำงานอยู่บน Git repo โดยตรง นี่คือหลักของ เวิร์กโฟลว์ API แบบ Git-native: spec ถูก version, review และติดตาม history เหมือนไฟล์อื่นใน codebase แทนที่จะอยู่ในเครื่องมือแยกต่างหากแล้วค่อย export snapshot เป็นระยะ
ข้อกำหนดเบื้องต้น
ก่อนเริ่ม ให้เตรียมสิ่งต่อไปนี้:
- บัญชี Apidog และเข้าถึงแอปเดสก์ท็อปหรือเว็บได้
- GitHub หรือ GitLab repository ที่มีไฟล์ OpenAPI อยู่แล้ว เช่น
openapi.yaml,openapi.jsonหรือไฟล์ภายใต้docs/ - สิทธิ์เขียนบน branch ที่ต้องการ sync
- เปิดใช้ Spec-First Mode (beta) ใน Apidog
- หากใช้ Azure DevOps ให้เชื่อมต่อผ่าน Git Connection
ถ้าคุณมีสิทธิ์อ่านอย่างเดียว คุณจะเปิดและดึง spec ได้ แต่จะ push commit กลับ repo ไม่ได้
ขั้นตอนที่ 1: เชื่อมต่อ Git provider
เริ่มจากให้สิทธิ์ Apidog เข้าถึง repository ที่ต้องการ sync
- เปิด Apidog
- สร้างโปรเจกต์ใหม่
- เลือก Spec-First Mode
- เมื่อระบบถามแหล่งที่มา ให้เลือก Git provider เช่น GitHub หรือ GitLab
- คลิก Authorize
- เบราว์เซอร์จะเปิดหน้าจอ OAuth ของ provider
- อนุญาตให้ Apidog เข้าถึง repository ที่ต้องการ
บน GitHub คุณสามารถจำกัด scope เฉพาะ repository ที่ต้องการได้ แนะนำให้ให้สิทธิ์เฉพาะ repo ที่เกี่ยวข้องแทนการให้สิทธิ์ทั้งบัญชี
หลัง authorize สำเร็จ คุณจะถูกส่งกลับมายัง Apidog พร้อม Git provider ที่เชื่อมต่อแล้ว ขั้นตอนนี้ทำเพียงครั้งเดียวต่อ provider โปรเจกต์ถัดไปสามารถใช้ connection เดิมได้
อ่านรายละเอียดเพิ่มเติมเกี่ยวกับ Spec-First Mode และ Azure DevOps ผ่าน Git Connection ได้ที่ เอกสาร Spec-First Mode
ขั้นตอนที่ 2: สร้างโปรเจกต์จาก repository และ branch
เมื่อเชื่อมต่อ provider แล้ว ให้ชี้ Apidog ไปยังไฟล์ OpenAPI ใน repo
- เลือก repository ที่เก็บ OpenAPI spec
- เลือก branch ที่ต้องการ sync เช่น
main - ระบุ path ของไฟล์ OpenAPI หากระบบถาม เช่น:
openapi.yamldocs/openapi.yamlspecs/public-api.yaml
- สร้างโปรเจกต์
Apidog จะโหลด spec จาก branch ที่เลือกและเปิดใน editor จากนั้น sidebar ด้านซ้ายจะแสดง endpoints และ schemas ที่ parse มาจากไฟล์ OpenAPI
ณ จุดนี้คุณไม่ได้แก้ไขสำเนาแยกอีกชุดหนึ่ง แต่กำลังทำงานกับ spec ที่ผูกกับ repository โดยตรง
ขั้นตอนที่ 3: แก้ไข OpenAPI YAML ใน editor
Spec-First Mode มี editor สำหรับ OpenAPI YAML พร้อม syntax highlighting, inline validation และ autocomplete คุณจึงแก้ไข spec เป็น YAML ได้โดยตรง ในขณะที่ Apidog อัปเดตโครงสร้าง API ใน sidebar ตามเนื้อหาที่คุณเขียน
ตัวอย่าง: เพิ่ม health check endpoint
paths:
/health:
get:
summary: Service health check
operationId: getHealth
responses:
'200':
description: Service is up
content:
application/json:
schema:
type: object
properties:
status:
type: string
example: ok
ระหว่างแก้ไข ควรตรวจสอบ 3 จุดนี้ก่อน commit:
โครงสร้าง endpoint ใน sidebar
ตรวจว่า/healthปรากฏในรายการ endpoint แล้ว-
inline validation
แก้ error เช่น:-
responsesหาย -
$refชี้ผิด path - indentation ผิด
- schema ไม่ถูกต้องตาม OpenAPI format
-
YAML formatting
OpenAPI YAML อ่อนไหวต่อ indentation มาก แนะนำให้ตรวจ indentation ก่อน commit ทุกครั้ง
หากต้องการเข้าใจการทำงานร่วมกับ diff และ history เพิ่มเติม อ่านต่อได้ที่ การควบคุมเวอร์ชัน OpenAPI ด้วย Git
ขั้นตอนที่ 4: Commit และ Push กลับ GitHub
เมื่อแก้ไขเสร็จและ validation ผ่าน ให้ส่งการเปลี่ยนแปลงกลับไปยัง repository
- เปิดแผง Git หรือ source control ในโปรเจกต์
- ตรวจ diff ของไฟล์ OpenAPI
- เขียน commit message เช่น:
Add /health endpoint
- คลิก Commit & Push
หลัง push สำเร็จ ให้เปิด repository บน GitHub แล้วตรวจสอบว่า commit ปรากฏใน branch history ตามปกติ การเปลี่ยนแปลงจะอยู่ในไฟล์ OpenAPI ที่คุณแก้ไข และ author จะเป็นบัญชีของคุณตามสิทธิ์ Git ที่เชื่อมต่อไว้
หากแก้ไขแล้วเปลี่ยนใจก่อน push ให้ใช้คำสั่ง discard unpushed edits เพื่อย้อน spec กลับไปยังสถานะล่าสุดที่ sync กับ repo แล้ว การเปลี่ยนแปลงจะยังไม่ออกจาก Apidog จนกว่าคุณจะ commit และ push
ขั้นตอนที่ 5: ตรวจสอบสถานะการซิงค์
Apidog จะแสดง sync indicator เพื่อบอกสถานะระหว่าง editor กับ remote branch
หลัง push สำเร็จ คุณควรเห็นสถานะประมาณว่า:
Synced just now
หมายความว่า spec ใน Apidog และ spec บน remote branch ตรงกันแล้ว
เมื่อเวลาผ่านไป indicator จะอัปเดต เช่น:
Synced 5 minutes ago
หากเพื่อนร่วมทีม push การเปลี่ยนแปลงเข้ามา Apidog จะดึงข้อมูลล่าสุดและอัปเดต editor ให้สอดคล้องกับ repo
ถ้า indicator แสดงว่าสำเนาในเครื่องล้าสมัยหรือมี pending changes ให้หยุดตรวจสอบก่อนทำงานต่อ เพื่อป้องกันการแก้ไขทับกันบน branch เดียวกัน
การแก้ไขปัญหาที่พบบ่อย
Push ไม่ได้เพราะ permission error
สาเหตุที่พบบ่อย:
- OAuth token หมดอายุ
- token ถูก revoke จากฝั่ง Git provider
- บัญชีไม่มีสิทธิ์เขียน repo หรือ branch
วิธีแก้:
- กลับไป authorize Git provider ใหม่
- ตรวจสิทธิ์ของบัญชีบน repository
- ตรวจว่า branch ที่เลือกอนุญาตให้ push ได้
Push ไปยัง branch ที่ protected ไม่ได้
หาก branch เช่น main ถูกตั้งค่าให้ต้องผ่าน pull request ก่อน การ push ตรงจาก Apidog อาจถูกปฏิเสธ
ทางเลือก:
- sync กับ branch สำหรับงาน เช่น
feature/update-openapi - push แล้วเปิด pull request ตาม workflow ของทีม
- ปรับ branch protection rule หากเหมาะสมกับนโยบายทีม
เกิด merge conflict
ถ้าเพื่อนร่วมทีมแก้ไข spec บน branch เดียวกันในขณะที่คุณกำลังแก้ไขอยู่ remote อาจเดินหน้าไปก่อน local copy
วิธีจัดการ:
- ดึงข้อมูลล่าสุดจาก branch
- ตรวจส่วน YAML ที่ conflict
- แก้ conflict เหมือนไฟล์ text ปกติ
- ตรวจ validation อีกครั้ง
- commit และ push ใหม่
เพราะ OpenAPI spec เป็นไฟล์ข้อความ conflict จึงจัดการได้เหมือน code file อื่นใน Git
Inline validation แจ้ง error
Apidog อาจไม่บังคับให้คุณหยุด commit ทุกกรณี แต่ควรแก้ validation warning/error ก่อน push โดยเฉพาะปัญหาเหล่านี้:
- missing required fields
-
$refผิด - schema type ไม่ตรง
- response object ไม่สมบูรณ์
- YAML indentation ผิด
spec ที่ถูกต้องช่วยให้เอกสาร generated docs, mock server และ test workflow ทำงานได้แม่นยำขึ้น
คำถามที่พบบ่อย
การซิงค์กับ GitHub ใช้กับ GitLab และ Azure DevOps ได้หรือไม่?
ได้ Spec-First Mode รองรับ GitHub และ GitLab โดยตรง ส่วน Azure DevOps ใช้ผ่าน Git Connection ขั้นตอนหลักเหมือนกันคือ connect, edit, commit และ push แตกต่างกันเฉพาะหน้าจอ authorization ของแต่ละ provider
ถ้าเพื่อนร่วมทีมแก้ไข spec ใน repo ขณะที่ฉันทำงานใน Apidog จะเกิดอะไรขึ้น?
Apidog จะดึงการเปลี่ยนแปลงเข้ามาเป็นส่วนหนึ่งของการซิงค์สองทาง หากการแก้ไขอยู่คนละส่วนของไฟล์ การรวมมักทำได้ตามปกติ หากแก้ไขส่วนเดียวกัน คุณต้องแก้ Git conflict เหมือนไฟล์ YAML ทั่วไป
ฉันยกเลิกการเปลี่ยนแปลงก่อนถึง GitHub ได้หรือไม่?
ได้ ตราบใดที่ยังไม่ได้คลิก Commit & Push การแก้ไขยังไม่ถูกส่งไปยัง remote คุณสามารถ discard unpushed edits เพื่อย้อนกลับไปยังสถานะล่าสุดที่ sync แล้วได้



Top comments (0)