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.
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:
- Tạo tệp
.httphoặc.resttrong repo. - Viết request bằng cú pháp gần giống HTTP thô.
- Chạy request trong VS Code khi phát triển.
- Chạy cùng tệp đó trong CI bằng CLI.
- 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
Để chạy trong terminal hoặc CI, cài CLI qua npm:
npm install -g httpyac
Kiểm tra cài đặt:
httpyac --version
Đị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}}
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}}"
}
Ví dụ tệp .env local:
USERNAME=dev@example.com
PASSWORD=local-password
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
Trong CI, cấu hình USERNAME và PASSWORD 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
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;
}}
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);
});
}}
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
Chạy tất cả request trong một thư mục:
httpyac send --all "api/**/*.http"
Chạy với môi trường staging:
httpyac send --all --env staging "api/**/*.http"
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"
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"
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
.httptrong 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)