DEV Community

Cover image for Stoplight + Postman so với Apidog: Giải pháp API toàn diện Thiết kế, Tài liệu và Kiểm thử
Sebastian Petrus
Sebastian Petrus

Posted on • Originally published at apidog.com

Stoplight + Postman so với Apidog: Giải pháp API toàn diện Thiết kế, Tài liệu và Kiểm thử

Nếu nhóm của bạn thiết kế và tài liệu hóa OpenAPI bằng Stoplight, rồi chuyển sang Postman để chạy collection và kiểm thử, vấn đề thường gặp là: spec và test nhanh chóng lệch nhau. Khi tìm giải pháp thay thế cho Stoplight Postman, mục tiêu không chỉ là đổi công cụ, mà là giảm số nguồn chân lý cho cùng một hợp đồng API. Apidog giải quyết bài toán này bằng cách dùng spec OpenAPI làm nguồn chân lý cho thiết kế, tài liệu, mock, kiểm thử tự động và CI trong một workspace có thể kết nối Git.

Dùng thử Apidog ngay hôm nay

Bài viết này tập trung vào cách đánh giá Stoplight + Postman so với Apidog ở góc độ triển khai thực tế: công cụ nào mạnh ở đâu, điểm nào gây xung đột khi dùng song song, và khi nào nên hợp nhất workflow. Nếu bạn muốn hiểu thêm nền tảng của cách làm spec-first, xem thêm: Phát triển API ưu tiên Spec là gì?

Vấn đề khi dùng hai công cụ

Stoplight và Postman đều mạnh, nhưng mạnh ở các giai đoạn khác nhau của vòng đời API.

  • Stoplight phù hợp để thiết kế OpenAPI, quản lý spec bằng Git và tạo tài liệu tham khảo.
  • Postman phù hợp để chạy request collection, quản lý environment, viết test script và đưa test vào CI bằng Newman.

Vấn đề bắt đầu khi cùng một hợp đồng API được duy trì ở hai nơi.

1. Spec và test bị lệch

Spec OpenAPI nằm trong Git thông qua Stoplight. Collection Postman nằm trong Postman Cloud.

Ví dụ: developer thay đổi request body schema trong OpenAPI:

requestBody:
  required: true
  content:
    application/json:
      schema:
        required:
          - email
          - name
Enter fullscreen mode Exit fullscreen mode

Nhưng collection Postman vẫn chỉ gửi:

{
  "email": "user@example.com"
}
Enter fullscreen mode Exit fullscreen mode

Kết quả: QA chạy test và thấy lỗi. Nhưng lỗi này không nhất thiết là lỗi sản phẩm; nó có thể là lỗi đồng bộ giữa spec và collection.

2. Bảo trì trùng lặp

Các thông tin sau thường bị khai báo hai lần:

  • Base URL theo môi trường
  • Path parameter
  • Auth scheme
  • Request body schema
  • Response schema
  • Example payload

Một workflow phổ biến là:

  1. Viết OpenAPI trong Stoplight.
  2. Xem tài liệu bằng Swagger hoặc Stoplight Docs.
  3. Import spec vào Postman.
  4. Viết test.
  5. Khi spec đổi, import lại hoặc sửa collection thủ công.

Vòng lặp import-sửa-import lại này khó mở rộng khi team có nhiều API, nhiều môi trường hoặc nhiều nhóm QA.

3. Hai chi phí cho một hợp đồng API

Stoplight phục vụ thiết kế và tài liệu. Postman phục vụ collection, test và monitoring.

Nếu tổ chức dùng cả hai, bạn đang trả tiền và quản trị hai nền tảng để duy trì cùng một hợp đồng API.

Stoplight mạnh ở đâu?

Stoplight nổi bật ở phần thiết kế OpenAPI.

Các điểm mạnh chính:

  • Trình soạn thảo OpenAPI trực quan.
  • Validate YAML/JSON khi viết.
  • Hỗ trợ style guide bằng Spectral.
  • Tích hợp GitHub/GitLab theo mô hình commit.
  • Tạo tài liệu tham khảo từ spec.
  • Có thể triển khai tài liệu với custom domain.
  • Quản lý mục lục bằng toc.json.
  • Có API explorer kiểu “try it”.

Nếu team của bạn có technical writer hoặc API governance team, Stoplight là công cụ tốt cho phần thiết kế và tài liệu.

Điểm yếu là phần thực thi: Stoplight không phải test runner. Nó không có hệ thống assertion, test report CI hoặc workflow kiểm thử hợp đồng hoàn chỉnh. Sau khi thiết kế xong spec, bạn thường phải chuyển sang công cụ khác.

Postman mạnh ở đâu?

Postman quen thuộc với hầu hết developer.

Các điểm mạnh chính:

  • Collection để nhóm request.
  • Environment variable.
  • Pre-request script.
  • Test script bằng JavaScript qua pm.test().
  • Collection Runner.
  • Newman CLI cho CI.
  • Monitoring theo lịch.

Ví dụ test trong Postman:

pm.test("Status is 200", function () {
  pm.response.to.have.status(200);
});

pm.test("Response contains id", function () {
  const json = pm.response.json();
  pm.expect(json).to.have.property("id");
});
Enter fullscreen mode Exit fullscreen mode

Postman rất mạnh khi bạn cần nhanh chóng gọi API, debug request hoặc chạy test collection.

Điểm yếu là khoảng cách với OpenAPI spec. Collection thường được import một lần rồi phân kỳ. Nếu muốn giữ collection đồng bộ với spec, bạn phải import lại thủ công hoặc viết script sync riêng.

So sánh Stoplight, Postman và Apidog

“Gốc” nghĩa là tính năng nằm trong workflow chính. “Một phần” nghĩa là có hỗ trợ nhưng cần workaround hoặc bước thủ công. “Không” nghĩa là công cụ không hỗ trợ trực tiếp.

Khả năng Stoplight Postman Apidog
Trình soạn thảo OpenAPI trực quan Gốc Một phần Gốc
Quy tắc Spectral / lint Gốc Không Gốc
Đồng bộ kho lưu trữ Git GitHub/GitLab Gốc Không Gốc, Chế độ Ưu tiên Spec beta
Workflow spec theo branch Gốc Không Gốc
Tài liệu tham khảo tự động Gốc Một phần Gốc
Tài liệu tương tác “try it” Gốc Không Gốc
Kiểm soát truy cập tài liệu riêng tư Gốc Không Cần xác minh trong bản dùng thử
Mock server từ spec Một phần, Prism Một phần Gốc
Request collection runner Không Gốc Gốc
JavaScript test script Không Gốc Gốc
Trình soạn thảo assertion trực quan Không Không Gốc
Quản lý environment variable Không Gốc Gốc
Tích hợp CI/CD Newman/CLI Không Gốc Gốc
Kiểm thử hợp đồng từ spec Không Không Gốc
Tái sử dụng schema đa dự án Một phần Không Cần xác minh trong bản dùng thử
SSO / SCIM Có, Enterprise Có, Enterprise Kiểm tra theo yêu cầu của bạn
Audit log Kiểm tra theo yêu cầu của bạn

Các ô “cần xác minh” nên được kiểm tra bằng dữ liệu thật của team bạn. Đừng chỉ dựa vào trang marketing. Hãy thử với repo OpenAPI thật, nhiều project thật và cấu trúc quyền thật.

Apidog thay đổi workflow như thế nào?

Chế độ Ưu tiên Spec của Apidog kết nối với GitHub hoặc GitLab repo hiện có và dùng repo đó làm nguồn spec chính.

Khác với việc import OpenAPI một lần, workflow này giữ workspace trong Apidog đồng bộ với commit trong Git.

Apidog Spec First Mode

Workflow thực tế khi chuyển từ Stoplight + Postman sang Apidog:

  1. Giữ nguyên repo OpenAPI hiện có.
  2. Kết nối repo GitHub hoặc GitLab với Apidog.
  3. Apidog đọc spec và tạo tài liệu API.
  4. Apidog tạo mock server từ schema.
  5. Apidog tạo test case hoặc assertion dựa trên schema.
  6. Team bổ sung assertion nghiệp vụ nếu cần.
  7. Chạy test bằng CLI trong CI.

Điểm quan trọng: Git vẫn là nguồn chân lý. Apidog trở thành lớp thực thi cho tài liệu, mock, test và report.

Xem hướng dẫn thiết lập chi tiết tại: Hướng dẫn về Chế độ Ưu tiên Spec

Nếu bạn đang phân vân giữa spec-first và design-first, đọc thêm: Ưu tiên Spec hay Ưu tiên Thiết kế: Bạn nên sử dụng Chế độ Apidog nào?

Ví dụ: kiểm thử hợp đồng từ OpenAPI spec

Giả sử API có endpoint:

GET /orders/{orderId}
Enter fullscreen mode Exit fullscreen mode

Trong Postman, bạn thường viết test thủ công:

// Postman test tab: viết thủ công và bảo trì riêng với spec
pm.test("Status is 200", function () {
  pm.response.to.have.status(200);
});

pm.test("Response has orderId", function () {
  const json = pm.response.json();
  pm.expect(json).to.have.property("orderId");
  pm.expect(json.orderId).to.be.a("string");
});
Enter fullscreen mode Exit fullscreen mode

Vấn đề: test này lặp lại thông tin đã có trong OpenAPI spec.

Nếu schema thay đổi và thêm trường bắt buộc status, test Postman ở trên vẫn có thể pass nếu bạn không cập nhật nó.

Trong workflow spec-first, schema là nguồn xác thực:

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

components:
  schemas:
    Order:
      type: object
      required:
        - orderId
        - status
        - createdAt
      properties:
        orderId:
          type: string
        status:
          type: string
          enum:
            - pending
            - processing
            - shipped
            - delivered
        createdAt:
          type: string
          format: date-time
Enter fullscreen mode Exit fullscreen mode

Khi YAML này được commit vào Git, Apidog đồng bộ schema và dùng nó cho kiểm thử hợp đồng. Nếu response thiếu status, test sẽ fail vì response không còn khớp schema.

Bạn vẫn có thể thêm assertion nghiệp vụ, ví dụ:

// Assertion bổ sung cho logic nghiệp vụ
pm.test("Order status is valid for shipped flow", function () {
  const json = pm.response.json();
  pm.expect(["processing", "shipped", "delivered"]).to.include(json.status);
});
Enter fullscreen mode Exit fullscreen mode

Khác biệt là assertion schema cơ bản không còn phải viết lại bằng tay.

Để hiểu thêm về quan hệ giữa spec và Git, xem: Cách kiểm soát phiên bản Spec OpenAPI bằng Git?

Checklist đánh giá trước khi chuyển đổi

Trước khi thay Stoplight + Postman bằng một nền tảng duy nhất, hãy chạy thử với API thật.

1. Kiểm tra đồng bộ Git

Xác minh các trường hợp sau:

  • Commit mới có được đồng bộ đúng không?
  • Branch hoặc PR có được phản ánh đúng không?
  • $ref nhiều file có được resolve đúng không?
  • Mono-repo có hoạt động như mong đợi không?

2. Kiểm tra mock server

Dùng spec thật và kiểm tra:

  • Response example có khớp schema không?
  • Mock có xử lý path parameter không?
  • Mock có hỗ trợ nhiều environment không?
  • Frontend team có thể dùng mock mà không cần backend không?

3. Kiểm tra test và CI

Nếu hiện tại bạn dùng Newman:

newman run collection.json -e staging.json
Enter fullscreen mode Exit fullscreen mode

Khi chuyển sang Apidog CLI, hãy xác minh:

  • Lệnh chạy trong CI.
  • Exit code khi test fail.
  • Định dạng report.
  • Khả năng tích hợp với dashboard hiện có.
  • Khả năng export kết quả cho pipeline.

4. Kiểm tra quyền và governance

Các câu hỏi cần trả lời bằng thử nghiệm thực tế:

  • Có giới hạn quyền xem test report theo team/project được không?
  • SSO hoạt động thế nào?
  • SCIM provisioning có phù hợp với IdP của bạn không?
  • Khi user rời tổ chức, quyền có bị thu hồi đúng không?
  • Audit log lưu những sự kiện nào?
  • Audit log được lưu bao lâu?

Với SCIM, bạn có thể đối chiếu hành vi triển khai với RFC SCIM.

5. Kiểm tra tái sử dụng schema đa dự án

Nếu bạn có schema dùng chung như:

components:
  schemas:
    ErrorResponse:
      $ref: "../shared/errors.yaml#/ErrorResponse"
Enter fullscreen mode Exit fullscreen mode

Hãy kiểm tra Apidog xử lý các $ref chia sẻ giữa nhiều project như thế nào. Đây là điểm cần test kỹ trong mọi migration nền tảng API.

Khi nào nên giữ Stoplight + Postman?

Không phải team nào cũng nên chuyển ngay.

Bạn có thể tiếp tục dùng hai công cụ nếu:

  • Tài liệu Stoplight đã được tùy chỉnh sâu bằng toc.json.
  • Technical writer đang sở hữu workflow tài liệu hiện tại.
  • Postman collection có hàng trăm pre-request script.
  • Collection dùng nhiều biến động hoặc logic JavaScript phức tạp.
  • Team đang dùng Postman Monitoring cho kiểm tra uptime.
  • Tích hợp alert/on-call hiện tại phụ thuộc vào Postman.

Trong các trường hợp này, chi phí migration có thể lớn hơn lợi ích ngắn hạn. Cách hợp lý là chọn một API đại diện, chạy POC, rồi đo chi phí chuyển đổi.

Nếu bạn muốn đánh giá riêng các lựa chọn thay thế Postman, xem thêm: Các lựa chọn thay thế Postman tốt nhất để kiểm thử API

FAQ

Apidog có thay thế trình soạn thảo OpenAPI trực quan của Stoplight Studio không?

Có. Apidog có trình soạn thảo trực quan cho OpenAPI schema, xác thực thời gian thực và lint rule.

Tuy nhiên, nếu team của bạn phụ thuộc vào rule Spectral tùy chỉnh trong file .spectral.yaml, hãy kiểm tra kỹ trong bản dùng thử để đảm bảo rule tương đương được áp dụng đúng.

Apidog có đồng bộ với GitHub repo hiện có mà không cần import lại spec không?

Có, thông qua Chế độ Ưu tiên Spec của Apidog, hiện đang ở giai đoạn beta. Bạn có thể kết nối GitHub hoặc GitLab repo và giữ workspace đồng bộ với commit.

Bạn không cần loại bỏ repo hiện tại.

Đọc thêm: API Spec as Code

Apidog có hỗ trợ CLI giống Newman trong CI không?

Có. Apidog có CLI riêng để chạy test scenario và xuất report.

Nếu pipeline hiện tại dùng:

newman run
Enter fullscreen mode Exit fullscreen mode

Bạn sẽ cần thay bằng lệnh tương đương của Apidog CLI. Hãy kiểm tra lại format output vì các dashboard hoặc script nội bộ có thể đang phụ thuộc vào JSON output của Newman.

Pre-request script và biến động từ Postman thì sao?

Apidog hỗ trợ pre-request script và variable. Nếu collection Postman của bạn dùng nhiều pm.variables.set() hoặc JavaScript tùy chỉnh, logic thường có thể chuyển được, nhưng cú pháp có thể cần điều chỉnh.

Nên audit collection trước khi migration:

  • Script nào dùng cho auth?
  • Script nào tạo test data?
  • Script nào parse response để set variable?
  • Script nào có thể thay bằng assertion hoặc schema validation?

Chế độ Ưu tiên Spec của Apidog đã sẵn sàng cho production chưa?

Chế độ Ưu tiên Spec hiện đang ở giai đoạn beta. Chức năng cốt lõi đã hoạt động, nhưng các case như mono-repo lớn, $ref lồng nhau qua nhiều file và report trạng thái CI vẫn nên được kiểm tra với spec thật trước khi rollout toàn bộ.

Kết luận

Stoplight và Postman đều giải quyết vấn đề thực tế, nhưng chúng tách hợp đồng API thành hai workflow: một bên là spec, một bên là test. Khi spec và test nằm ở hai công cụ khác nhau, drift là kết quả mặc định.

Apidog đưa ra cách tiếp cận hợp nhất hơn: giữ OpenAPI trong Git làm nguồn chân lý, rồi dùng cùng spec đó cho tài liệu, mock server, kiểm thử hợp đồng và CI report.

Trước khi chuyển đổi, hãy xác minh các điểm quan trọng như SSO, SCIM, quyền report, audit log và $ref đa dự án bằng một bản thử nghiệm thực tế.

Bạn có thể bắt đầu bằng cách kết nối repo OpenAPI từ GitHub hoặc GitLab, tạo tài liệu trực tiếp và mock server từ cùng một spec. Tải Apidog để thử nghiệm, hoặc xem trang Chế độ Ưu tiên Spec để biết chi tiết thiết lập.

Top comments (0)