DEV Community

Cover image for HttpYac là gì?
Sebastian Petrus
Sebastian Petrus

Posted on • Originally published at apidog.com

HttpYac là gì?

Nếu bạn tìm kiếm httpYac, có thể bạn đang cần một cách để gửi HTTP request từ các tệp văn bản thuần túy, lưu trong Git, chạy ngay trong VS Code, rồi chạy lại trong CI. httpYac giải quyết đúng nhu cầu đó: nó chạy các tệp .http / .rest thông qua tiện ích mở rộng VS Code hoặc CLI Node.js. Bài viết này hướng dẫn cách thiết lập, viết request, dùng biến môi trường, thêm assertion và đưa httpYac vào pipeline CI. Nếu bạn cần bức tranh rộng hơn, xem thêm hướng dẫn kiểm thử API.

Dùng thử Apidog ngay hôm nay

httpYac là gì?

httpYac là một HTTP client mã nguồn mở dựa trên định dạng tệp .http. Thay vì tạo request trong GUI, bạn viết request bằng văn bản thuần túy, đặt cạnh mã nguồn, commit vào Git và chạy bằng VS Code hoặc terminal.

Dự án có trên GitHub và tài liệu chính thức tại httpyac.github.io.

Mô hình làm việc của httpYac rất đơn giản:

  1. Tạo tệp .http hoặc .rest trong repo.
  2. Viết request bằng cú pháp gần giống HTTP thô.
  3. Chạy request trong VS Code khi phát triển.
  4. Chạy cùng tệp đó trong CI bằng CLI.
  5. Review thay đổi request như review code trong pull request.

httpYac gồm hai phần chính:

  • Tiện ích mở rộng VS Code: thêm nút “Send Request” phía trên từng request, hiển thị response và cho phép chọn môi trường ngay trong editor.
  • CLI httpyac: chạy cùng các tệp .http ở chế độ headless, phù hợp cho CI/CD.

Điểm mạnh là không có bước export/import riêng. Tệp bạn commit cũng chính là tệp pipeline sẽ chạy.

Cài đặt httpYac

Nếu bạn dùng VS Code, hãy cài extension httpYac từ marketplace. Sau đó tạo tệp ví dụ:

mkdir api
touch api/users.http
Enter fullscreen mode Exit fullscreen mode

Để chạy trong terminal hoặc CI, cài CLI qua npm:

npm install -g httpyac
Enter fullscreen mode Exit fullscreen mode

Kiểm tra cài đặt:

httpyac --version
Enter fullscreen mode Exit fullscreen mode

Định dạng tệp .http

Một tệp .http chứa nhiều request, phân tách bằng ###.

### Get a user
GET https://api.example.com/users/42
Accept: application/json

### Create a user
# @name createUser
POST https://api.example.com/users
Content-Type: application/json

{
  "name": "Ada Lovelace",
  "email": "ada@example.com"
}

### Use a value from the previous response
GET https://api.example.com/users/{{createUser.response.body.$.id}}
Authorization: Bearer {{token}}
Enter fullscreen mode Exit fullscreen mode

Các thành phần cần chú ý:

  • ###: phân tách các request.
  • # @name createUser: đặt tên request để tham chiếu response ở request sau.
  • {{...}}: chèn biến hoặc giá trị lấy từ response trước đó.
  • Header và body được viết gần giống HTTP thô.

Định dạng này cũng gần với định dạng của extension REST Client, nên nhiều tệp có thể chuyển đổi giữa hai công cụ với ít chỉnh sửa.

Dùng biến và môi trường

Bạn nên tránh hard-code host, token hoặc thông tin đăng nhập trong tệp .http. httpYac có thể đọc biến từ:

  • tệp .env
  • tệp http-client.env.json
  • biến nội tuyến trong tệp request
  • biến môi trường trong CI

Ví dụ tệp request:

@host = https://api.staging.example.com

### Login
# @name login
POST {{host}}/auth/login
Content-Type: application/json

{
  "user": "{{USERNAME}}",
  "pass": "{{PASSWORD}}"
}
Enter fullscreen mode Exit fullscreen mode

Ví dụ tệp .env local:

USERNAME=dev@example.com
PASSWORD=local-password
Enter fullscreen mode Exit fullscreen mode

Trong thực tế, nên commit tệp .http, nhưng không commit .env chứa secret. Thêm .env vào .gitignore:

echo ".env" >> .gitignore
Enter fullscreen mode Exit fullscreen mode

Trong CI, cấu hình USERNAMEPASSWORD bằng secret hoặc environment variables của pipeline.

Viết request có flow đăng nhập

Một pattern phổ biến là đăng nhập trước, lấy token, rồi dùng token cho các request sau.

@host = https://api.staging.example.com

### Login
# @name login
POST {{host}}/auth/login
Content-Type: application/json

{
  "user": "{{USERNAME}}",
  "pass": "{{PASSWORD}}"
}

### Get current user
GET {{host}}/me
Authorization: Bearer {{login.response.body.$.token}}
Accept: application/json
Enter fullscreen mode Exit fullscreen mode

Cách này giúp request phụ thuộc vào response trước đó mà không cần copy token thủ công.

Thêm script và assertion

httpYac hỗ trợ JavaScript trong request để xử lý dữ liệu trước hoặc sau khi gửi request. Đây là phần hữu ích khi bạn muốn biến .http thành kiểm thử API nhẹ.

Ví dụ kiểm tra status code và lưu token:

### Login and capture token
# @name login
POST {{host}}/auth/login
Content-Type: application/json

{
  "user": "{{USERNAME}}",
  "pass": "{{PASSWORD}}"
}

{{
  // post-request script
  test("status is 200", () => {
    client.assert.strictEqual(response.statusCode, 200);
  });

  test("token exists", () => {
    client.assert.ok(response.parsedBody.token);
  });

  exports.token = response.parsedBody.token;
}}
Enter fullscreen mode Exit fullscreen mode

Sau đó dùng token ở request tiếp theo:

### Get profile
GET {{host}}/profile
Authorization: Bearer {{token}}

{{
  test("profile request is successful", () => {
    client.assert.strictEqual(response.statusCode, 200);
  });
}}
Enter fullscreen mode Exit fullscreen mode

Cách tiếp cận này phù hợp khi bạn cần một số kiểm tra API tập trung mà chưa muốn thiết lập framework test đầy đủ.

Chạy httpYac trong CI

CLI là phần giúp bạn chạy cùng các tệp .http trong pipeline.

Chạy một tệp:

httpyac send api/users.http
Enter fullscreen mode Exit fullscreen mode

Chạy tất cả request trong một thư mục:

httpyac send --all "api/**/*.http"
Enter fullscreen mode Exit fullscreen mode

Chạy với môi trường staging:

httpyac send --all --env staging "api/**/*.http"
Enter fullscreen mode Exit fullscreen mode

Nếu assertion thất bại, httpYac trả về exit code khác 0, nhờ đó CI có thể đánh dấu job là failed.

Ví dụ GitHub Actions tối giản:

name: API checks

on:
  pull_request:
  push:
    branches:
      - main

jobs:
  api-checks:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - uses: actions/setup-node@v4
        with:
          node-version: 20

      - name: Install httpYac
        run: npm install -g httpyac

      - name: Run API requests
        env:
          USERNAME: ${{ secrets.API_USERNAME }}
          PASSWORD: ${{ secrets.API_PASSWORD }}
        run: httpyac send --all --env staging "api/**/*.http"
Enter fullscreen mode Exit fullscreen mode

Với GitLab CI, cấu hình có thể tương tự:

api_checks:
  image: node:20
  script:
    - npm install -g httpyac
    - httpyac send --all --env staging "api/**/*.http"
Enter fullscreen mode Exit fullscreen mode

Khi nào nên dùng httpYac?

httpYac phù hợp nhất khi workflow của bạn xoay quanh Git, VS Code và CI.

Tình huống Lý do httpYac phù hợp
Bạn làm việc chủ yếu trong VS Code Request nằm cạnh mã nguồn, không cần đổi công cụ
Bạn muốn review request trong Git Tệp văn bản thuần túy dễ diff và review trong PR
Nhóm thoải mái với code Biến, script và assertion yêu cầu kiến thức kỹ thuật
Bạn cần kiểm tra API nhẹ trong CI CLI dễ thêm vào pipeline hiện có
Bạn đã dùng tệp REST Client Cú pháp tương tự, dễ chuyển sang httpYac

httpYac kém phù hợp hơn nếu:

  • người không phải developer cần chỉnh sửa hoặc chạy request thường xuyên;
  • bạn cần GUI để quản lý bộ request lớn;
  • nhóm cần môi trường chia sẻ và đồng bộ tự động;
  • bạn cần mocking, tài liệu API và báo cáo phong phú trong cùng một nền tảng.

Nói ngắn gọn: httpYac rất mạnh khi “request là code”. Nhưng khi workflow mở rộng sang nhiều vai trò hơn, GUI và workspace chia sẻ có thể phù hợp hơn.

httpYac so với nền tảng GUI và CI

httpYac là trình chạy request từ tệp văn bản. Apidog đi theo mô hình khác: nền tảng API ưu tiên GUI, đồng thời có thể chạy trong CI.

Điểm cần làm rõ: Apidog không tự động chạy hoặc phân tích cú pháp các tệp .http. Nếu source of truth của bạn là thư mục .http, httpYac là công cụ chạy trực tiếp các tệp đó.

So sánh nhanh:

Khả năng httpYac Apidog
Nguồn request Tệp .http/.rest trong Git Request trực quan trong workspace, hỗ trợ nhập OpenAPI
Giao diện chỉnh sửa Văn bản trong VS Code hoặc editor bất kỳ Trình dựng trực quan với form và schema
Biến và môi trường .env, JSON, biến nội tuyến Môi trường được quản lý và chia sẻ trong nhóm
Assertion JavaScript trong request script Assertion trực quan và script
Chạy trong CI httpyac send apidog run
Mocking và tài liệu Không tích hợp sẵn Mock server và tài liệu tự động
Phù hợp nhất cho Developer muốn request dạng text, version bằng Git Nhóm muốn thiết kế, kiểm thử, mock và tài liệu trong một nơi

Nếu bạn muốn GUI, Apidog cho phép tạo và tổ chức request trực quan, sau đó chạy test trong CI bằng apidog run. Xem thêm tham khảo lệnh apidog run để biết cách dùng command, environment flag và reporter.

Apidog cũng có mock server và tài liệu API trong cùng workspace. Nếu mocking là yêu cầu quan trọng, bạn có thể tham khảo thêm danh sách các công cụ mocking endpoint REST.

Tóm lại:

  • Dùng httpYac nếu workflow chính là tệp .http trong Git, chạy trong VS Code và CI.
  • Dùng Apidog nếu bạn cần workspace trực quan, môi trường chia sẻ, mocking, tài liệu và CI trong cùng nền tảng.
  • Một số nhóm dùng cả hai: httpYac cho kiểm tra nhanh cục bộ, Apidog làm nguồn quản lý API chung cho nhóm.

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

httpYac có miễn phí không?

Có. httpYac là mã nguồn mở theo giấy phép MIT. Tiện ích mở rộng VS Code và CLI đều miễn phí để cài đặt và sử dụng. Bạn không cần tài khoản để chạy request cục bộ hoặc trong CI.

httpYac khác gì so với extension REST Client?

Cả hai đều dùng định dạng .http, nên nhiều tệp có thể dùng lại. Khác biệt chính là httpYac có CLI độc lập để chạy headless trong CI, xử lý môi trường rộng hơn và hỗ trợ script/assertion phong phú hơn.

Nếu bạn chỉ gửi request trong VS Code, cả hai đều có thể đáp ứng. Nếu bạn cần chạy cùng tệp trong pipeline, CLI của httpYac là lợi thế rõ ràng. Xem thêm danh sách plugin VS Code để kiểm thử API.

httpYac có thể thay thế Postman không?

Có thể, nếu bạn là developer muốn quản lý request bằng tệp văn bản trong Git và chạy chúng trong CI. Tuy nhiên, httpYac không cung cấp GUI, collection chia sẻ hoặc mocking tích hợp như các nền tảng API đầy đủ.

Nếu nhóm cần workspace trực quan, môi trường quản lý tập trung và mocking, một nền tảng như Apidog sẽ phù hợp hơn. Bạn có thể so sánh thêm trong danh sách các client kiểm thử API.

httpYac có hỗ trợ GraphQL và gRPC không?

httpYac xử lý GraphQL và một số giao thức ngoài REST thuần túy, bao gồm một số trường hợp streaming. Tuy nhiên, mức hỗ trợ có thể thay đổi theo phiên bản, nên hãy kiểm tra tài liệu chính thức để biết danh sách giao thức hiện tại.

Với REST, định dạng .http đã hỗ trợ các thành phần phổ biến như method, header, body và auth flow.

Kết luận

httpYac là lựa chọn rõ ràng nếu bạn muốn gửi HTTP request từ tệp văn bản thuần túy, chạy trong VS Code và chạy lại trong CI mà không cần bước export riêng. Nó phù hợp với nhóm developer muốn version request bằng Git, viết assertion bằng script và thêm kiểm tra API nhẹ vào pipeline.

Đánh đổi là workflow này giả định người dùng quen với code, file, biến môi trường và CI.

Nếu bạn muốn xây dựng request bằng GUI, chia sẻ môi trường được quản lý, tạo mock endpoint, sinh tài liệu và vẫn chạy kiểm thử trong CI, Apidog gom các phần đó vào một workspace. Bạn có thể tải xuống Apidog và chạy test bằng apidog run, hoặc giữ httpYac cho kiểm tra cục bộ nhanh và dùng Apidog làm nguồn quản lý API chung cho nhóm.

Top comments (0)