Kiểm Soát Phiên Bản OpenAPI Spec Với Git Như Thế Nào?

Kiểm soát phiên bản đặc tả OpenAPI của bạn như mã: chiến lược phân nhánh, xem xét yêu cầu kéo các thay đổi đặc tả và xác thực CI, tất cả được thực hiện trong Apidog.

Ashley Innocent

Ashley Innocent

2 tháng 6 2026

Kiểm Soát Phiên Bản OpenAPI Spec Với Git Như Thế Nào?

Apidog cho doanh nghiệp

Triển khai tại chỗ

SSO & RBAC

Tuân thủ SOC 2

Khám phá Apidog Enterprise

Đặc tả OpenAPI của bạn là một hợp đồng. Khi nó thay đổi mà không được kiểm soát, client sẽ bị lỗi, các bản mock sẽ lỗi thời, và các bài kiểm tra sẽ chạy thành công với một API không còn tồn tại. Vì vậy, hãy xử lý đặc tả này giống như phần còn lại của mã của bạn: đưa nó vào Git, tạo nhánh, xem xét và xác thực nó sau mỗi thay đổi.

Hướng dẫn này sẽ trình bày kiểm soát phiên bản OpenAPI bằng Git từ đầu đến cuối. Nơi đặt tệp, cách tạo nhánh, những gì người đánh giá thực sự tìm kiếm trong một bản diff đặc tả và cách đẩy thay đổi trực tiếp từ Apidog. Đến cuối cùng, bạn sẽ có một quy trình làm việc mà toàn bộ nhóm của bạn có thể tin cậy.

Tải ứng dụng

Tại sao cần kiểm soát phiên bản đặc tả OpenAPI của bạn?

Một đặc tả nằm trong wiki hoặc ổ đĩa chia sẻ không có lịch sử. Bạn không thể biết ai đã thay đổi payload của POST /orders vào thứ Ba tuần trước, hoặc tại sao. Git khắc phục điều đó.

Đặt openapi.yaml dưới sự kiểm soát phiên bản và bạn sẽ nhận được bốn điều miễn phí:

Đây là nền tảng của quy trình làm việc API Git-native: đặc tả là mã nguồn, và mã nguồn nằm trong Git.

Vị trí của tệp đặc tả trong kho lưu trữ (repo)

Hãy giữ cho nó đơn giản và dễ đoán. Hầu hết các nhóm đặt một tệp openapi.yaml duy nhất ở thư mục gốc của kho lưu trữ hoặc trong thư mục api/:

my-service/
├── api/
│ └── openapi.yaml
├── src/
└── README.md

Khi bạn duy trì nhiều phiên bản chính song song, hãy chia theo phiên bản với một tệp cho mỗi phiên bản chính:

api/
├── api-v1.yaml
└── api-v2.yaml

Điều này giúp cô lập các thay đổi gây phá vỡ. api-v1.yaml vẫn được giữ nguyên cho các client hiện có trong khi api-v2.yaml được phát triển. Nó cũng làm cho các bản diff nhỏ hơn và việc xem xét nhanh hơn, vì mỗi tệp thay đổi vì một lý do. Xử lý đặc tả theo cách này là ý tưởng cốt lõi đằng sau đặc tả API dưới dạng mã.

Hãy chọn một quy ước và ghi lại nó. Kết quả tồi tệ nhất là có hai tệp đều tự nhận là "đặc tả" chính thức.

Các chiến lược tạo nhánh cho thay đổi đặc tả

Bạn không cần một mô hình phân nhánh đặc biệt cho các đặc tả. Hãy tái sử dụng những gì mã của bạn đã làm. Phân nhánh từ main, thực hiện thay đổi, mở một PR.

Quy ước đặt tên giúp dễ dàng quét các nhánh đặc tả:

Loại nhánh Mẫu Ví dụ
Endpoint mới api/add-<resource> api/add-refunds
Thay đổi trường api/change-<resource>-<field> api/change-order-status
Thay đổi gây phá vỡ api/breaking-<description> api/breaking-v2-auth
Sửa lỗi / dọn dẹp api/fix-<description> api/fix-pagination-schema

Tiền tố api/ báo hiệu "PR này chạm đến hợp đồng" ngay lập tức. Người đánh giá và CI có thể lọc theo nó. Đối với các thay đổi gây phá vỡ, tiền tố breaking- rõ ràng là một dấu hiệu cho thấy điều này cần được xem xét kỹ lưỡng hơn và có thể cần tăng phiên bản.

Giữ các nhánh có thời gian tồn tại ngắn. Một nhánh đặc tả tồn tại trong hai tuần sẽ xung đột với các thay đổi của những người khác. Các nhánh nhỏ, tập trung sẽ hợp nhất (merge) một cách sạch sẽ.

Xem xét các thay đổi đặc tả trong pull request

Đây là nơi kiểm soát phiên bản thể hiện giá trị của nó. Một PR đặc tả là một thay đổi hợp đồng, và các thay đổi hợp đồng xứng đáng được xem xét kỹ lưỡng.

Viết YAML theo cách thân thiện với diff để người đánh giá có thể đọc được thay đổi, chứ không phải vật lộn với định dạng:

paths:
 /orders/{orderId}:
 get:
 summary: Get an order
 parameters:
 - name: orderId
 in: path
 required: true
 schema:
 type: string
 responses:
 "200":
 description: Order found
 content:
 application/json:
 schema:
 $ref: "#/components/schemas/Order"

Việc thụt lề nhất quán và mỗi thuộc tính trên một dòng có nghĩa là việc thêm một trường duy nhất sẽ hiển thị dưới dạng một dòng diff. Đó là mục tiêu.

Những gì người đánh giá nên kiểm tra:

Để phát hiện các thay đổi gây phá vỡ, hãy dựa vào công cụ hơn là mắt thường. Một bước CI (được đề cập bên dưới) có thể so sánh đặc tả của PR với main và làm thất bại bản dựng nếu nó phát hiện ra một thay đổi không tương thích. Con người có thể bỏ sót những điều này; công cụ diff thì không.

Commit & push từ Apidog

Việc chỉnh sửa YAML thô bằng tay vẫn hoạt động, nhưng một trình chỉnh sửa trực quan với tính năng xác thực trực tiếp sẽ nhanh hơn và phát hiện lỗi sớm hơn. Chế độ Spec-First của Apidog cung cấp cho bạn tính năng đồng bộ hóa Git hai chiều: chỉnh sửa đặc tả trong giao diện người dùng, commit và đẩy lên kho lưu trữ của bạn mà không cần rời khỏi công cụ. Kéo các thay đổi của đồng đội về theo cùng một cách.

Quy trình trông như sau:

  1. Kết nối kho Git của bạn và trỏ Apidog đến tệp đặc tả.
  2. Chỉnh sửa các endpoint, schema và ví dụ trong trình chỉnh sửa trực quan.
  3. Apidog ghi lại YAML sạch, thân thiện với diff vào tệp.
  4. Commit trên một nhánh và đẩy, sau đó mở PR của bạn như bình thường.

Vì Apidog tuần tự hóa YAML một cách nhất quán, các bản diff của bạn sẽ nhỏ và dễ xem xét, không có sự sắp xếp lại hay định dạng lại gây nhiễu. Bạn có thể đọc hướng dẫn thiết lập đầy đủ trong tài liệu Chế độ Spec-First của Apidog. Nếu bạn muốn tệp được đưa vào một nhà cung cấp cụ thể, hãy xem đồng bộ hóa đặc tả OpenAPI của bạn với GitHub.

Các hook xác thực CI

Không bao giờ để một đặc tả không hợp lệ đến được nhánh main. Tích hợp xác thực vào các kiểm tra pull request của bạn để một hợp đồng bị hỏng sẽ tự động làm thất bại bản dựng.

Một bước GitHub Actions tối thiểu:

name: Validate OpenAPI
on: [pull_request]
jobs:
 lint:
 runs-on: ubuntu-latest
 steps:
 - uses: actions/checkout@v4
 - name: Lint spec
 run: npx @redocly/cli lint api/openapi.yaml

Thêm các kiểm tra khác khi bạn phát triển:

Các kiểm tra này chạy trong vài giây và bắt được những lỗi mà người đánh giá có thể bỏ qua.

Các thực hành tốt nhất

Một vài thói quen giúp kiểm soát phiên bản đặc tả hoạt động tốt theo thời gian:

Câu hỏi thường gặp

Làm thế nào để phát hiện các thay đổi gây phá vỡ trong đặc tả OpenAPI?

Chạy một công cụ so sánh đặc tả (spec-diff tool) trong CI để so sánh pull request với phiên bản trên main. Các công cụ như oasdiff phân loại mỗi thay đổi là gây phá vỡ, không gây phá vỡ hoặc không phân loại, và có thể làm thất bại bản dựng nếu phát hiện thay đổi gây phá vỡ. Điều này giúp bắt được các trường bị xóa, tham số bắt buộc mới và các kiểu dữ liệu đã thay đổi mà việc xem xét thủ công có thể bỏ sót.

Tôi nên giữ một tệp OpenAPI hay chia nó thành nhiều tệp?

Hãy bắt đầu với một tệp openapi.yaml duy nhất. Đây là cách dễ nhất để xem xét và quản lý phiên bản. Khi tệp trở nên lớn hoặc bạn duy trì nhiều phiên bản chính song song, hãy chia theo phiên bản chính (api-v1.yaml, api-v2.yaml) hoặc sử dụng $ref để tách các schema thành các tệp riêng biệt. Đừng chia nhỏ quá sớm; một tệp dễ đọc tốt hơn năm tệp bị phân mảnh.

Tôi có thể kiểm soát phiên bản đặc tả của mình mà không cần viết YAML bằng tay không?

Có. Chế độ Spec-First của Apidog cho phép bạn chỉnh sửa đặc tả trong trình chỉnh sửa trực quan và đồng bộ hóa các thay đổi với Git theo cả hai hướng. Nó ghi YAML nhất quán, vì vậy các bản diff của bạn vẫn sạch sẽ và các pull request của bạn vẫn dễ đọc, trong khi bạn vẫn nhận được đầy đủ lịch sử Git và khả năng xem xét.

Tải ứng dụng

Thực hành thiết kế API trong Apidog

Khám phá cách dễ dàng hơn để xây dựng và sử dụng API