Nếu bạn đã tìm kiếm httpYac, có lẽ bạn đang muốn một cách để gửi các yêu cầu HTTP từ các tệp văn bản thuần túy mà bạn có thể lưu trữ trong Git, chạy bên trong VS Code, và chạy lại trong CI. httpYac chính là công cụ đó: một trình chạy tệp .http / .rest được cung cấp dưới dạng tiện ích mở rộng của VS Code và công cụ dòng lệnh Node.js. Hướng dẫn này giải thích cách hoạt động của nó, trình bày một ví dụ nhỏ, đề cập đến các trường hợp phù hợp và chỉ ra một đường dẫn GUI cộng với CI khi bạn không còn giới hạn ở các tệp văn bản. Để có cái nhìn tổng quan hơn về lĩnh vực này, hãy xem hướng dẫn kiểm thử API của chúng tôi.
httpYac thực sự là gì
httpYac là một HTTP client mã nguồn mở được xây dựng dựa trên định dạng tệp .http. Bạn viết các yêu cầu dưới dạng văn bản thuần túy, sau đó gửi chúng bằng một lần nhấn phím trong trình chỉnh sửa hoặc bằng một lệnh duy nhất trong terminal của bạn. Dự án có mặt trên GitHub và có tài liệu đầy đủ tại httpyac.github.io.

Ý tưởng cốt lõi rất đơn giản. Một yêu cầu nằm trong một tệp văn bản bên cạnh mã của bạn. Bạn tạo phiên bản cho nó bằng Git. Bạn xem xét nó trong một pull request. Bạn chạy nó theo cùng một cách dù bạn là một người dùng trong trình chỉnh sửa hay một tác vụ CI trên máy chủ xây dựng. Mô hình dựa trên Git, văn bản thuần túy đó là điểm mạnh lớn nhất của httpYac, và đó là lý do nhiều nhà phát triển backend tìm đến nó.
Công cụ này bao gồm hai phần:
- Tiện ích mở rộng VS Code (httpYac) cung cấp cho bạn một “Send Request” code lens phía trên mỗi yêu cầu, xem trước phản hồi và chuyển đổi môi trường bên trong trình chỉnh sửa.
- CLI (
httpyac, được cài đặt qua npm) chạy cùng các tệp ở chế độ không giao diện (headless). Đây là điều làm cho nó thân thiện với CI: các tệp bạn đã kiểm thử cục bộ chính là các tệp mà pipeline của bạn chạy.
Vì cả hai giao diện đều đọc cùng các tệp .http, không có bước xuất riêng biệt. Những gì bạn commit là những gì sẽ chạy.
Định dạng tệp .http
Một tệp .http là một danh sách các yêu cầu được phân tách bằng ###. Mỗi yêu cầu gần như giống với HTTP thô mà nó gửi. Đây là một ví dụ nhỏ.
### 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ó một vài điều đang xảy ra ở đây. Các dòng ### phân tách các yêu cầu. Chú thích # @name đặt tên cho một yêu cầu để bạn có thể tham chiếu phản hồi của nó sau này. Các vị trí giữ chỗ {{...}} lấy các biến, bao gồm các giá trị được xâu chuỗi từ các phản hồi trước đó. Định dạng này được chia sẻ với tiện ích mở rộng REST Client phổ biến, vì vậy các tệp thường được di chuyển giữa hai công cụ này với những chỉnh sửa nhỏ.
Biến và môi trường
httpYac đọc các biến từ các tệp .env, từ một tệp http-client.env.json, và từ các định nghĩa nội tuyến bên trong tệp yêu cầu. Bạn có thể giữ một bộ giá trị cho môi trường local, một bộ khác cho staging và một bộ khác cho production, sau đó chuyển đổi giữa chúng mà không cần chỉnh sửa yêu cầu.
@host = https://api.staging.example.com
### Login
# @name login
POST {{host}}/auth/login
Content-Type: application/json
{ "user": "{{USERNAME}}", "pass": "{{PASSWORD}}" }
Các bí mật được giữ trong các tệp .env mà bạn không lưu vào Git, do đó tệp yêu cầu tự nó an toàn để commit. Trong CI, các biến tương tự đến từ các biến môi trường hoặc các bí mật của pipeline.
Tạo script và xác nhận
Đây là lúc httpYac vượt xa một công cụ gửi yêu cầu cơ bản. Bạn có thể nhúng JavaScript vào một yêu cầu để thiết lập dữ liệu trước khi nó chạy hoặc để kiểm tra phản hồi sau đó. Các khối pre-request và post-request chạy trong ngữ cảnh Node, vì vậy bạn có thể tính toán một chữ ký, lưu trữ một token hoặc xác nhận trên phần thân (body).
### 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);
});
exports.token = response.parsedBody.token;
}}
Token được thu thập đó sau đó có sẵn cho yêu cầu tiếp theo dưới dạng {{token}}. Mô hình tạo script linh hoạt, đây là một phần sức hấp dẫn đối với các nhà phát triển muốn có logic mà không cần phải thiết lập một framework kiểm thử đầy đủ.
Chạy httpYac trong CI
CLI là cầu nối từ “chạy được trên máy của tôi” đến “chạy trong pipeline”. Cài đặt nó và trỏ nó đến các tệp của bạn.
npm install -g httpyac
# Run a single file
httpyac send api/users.http
# Run every request in a folder, pick an environment, fail on assertion errors
httpyac send --all --env staging "api/**/*.http"
httpYac sẽ thoát với mã lỗi khác 0 khi một xác nhận thất bại, đây là điều mà một tác vụ CI cần để đánh dấu bản dựng là lỗi. Nó có thể xuất ra đầu ra kiểu JUnit cho các trình báo cáo kiểm thử, do đó kết quả hiển thị trên bảng điều khiển CI của bạn thay vì bị chôn vùi trong nhật ký. Thêm lệnh đó vào GitHub Actions, GitLab CI, hoặc Jenkins và các tệp bạn đã chỉnh sửa trong VS Code giờ đây sẽ kiểm soát các lần hợp nhất của bạn.
Khi nào nên sử dụng httpYac
httpYac phù hợp với một loại nhóm và quy trình làm việc cụ thể. Hãy sử dụng nó khi hầu hết các điều sau đây là đúng.
| Tình huống | Lý do httpYac phù hợp |
|---|---|
| Bạn làm việc trong VS Code | Tiện ích mở rộng giữ các yêu cầu bên cạnh mã của bạn, không cần chuyển đổi ngữ cảnh |
| Bạn muốn các yêu cầu trong Git | Văn bản thuần túy có thể so sánh rõ ràng và xem xét trong PR |
| Nhóm của bạn thoải mái với mã code | Việc tạo script và tệp .env yêu cầu một số kiến thức về phát triển |
| Bạn chạy một vài kiểm tra tập trung | Nhẹ nhàng để thêm vào, không cần áp dụng nền tảng nào |
| Bạn đã sử dụng các tệp REST Client | Định dạng chia sẻ giúp việc chuyển đổi dễ dàng |
Nó ít phù hợp hơn khi những người không phải nhà phát triển cần chạy hoặc chỉnh sửa các yêu cầu, khi bạn muốn có một giao diện trực quan cho các bộ sưu tập yêu cầu lớn, khi bạn cần môi trường chia sẻ và đồng bộ nhóm mà không cần cấu hình tệp, hoặc khi bạn muốn báo cáo phong phú hơn và kiểm thử tải ở cùng một nơi. Tính tiện dụng của văn bản thuần túy là một tính năng cho đến khi bộ công cụ phát triển và nhóm mở rộng.
httpYac so với nền tảng GUI và CI
httpYac là một trình chạy tệp văn bản. Apidog là một mô hình khác: một nền tảng API ưu tiên GUI cũng chạy trong CI. Không có cái nào “tốt hơn” một cách trừu tượng; chúng giải quyết vấn đề từ các khía cạnh đối lập. Hãy rõ ràng về một điểm ngay từ đầu: Apidog không tự động chạy hoặc phân tích cú pháp các tệp .http. Nếu nguồn đáng tin cậy của bạn là một thư mục chứa các tệp .http, httpYac sẽ chạy chúng trực tiếp, và đó là lợi thế thực sự của nó.
Dưới đây là cách hai công cụ này so sánh về những yếu tố thường quyết định lựa chọn.
| Khả năng | httpYac | Apidog |
|---|---|---|
| Nguồn yêu cầu | Các tệp .http/.rest thuần túy trong Git |
Các yêu cầu trực quan trong không gian làm việc, cộng với nhập OpenAPI |
| Giao diện chỉnh sửa | Văn bản trong VS Code hoặc bất kỳ trình chỉnh sửa nào | Trình dựng trực quan với các trường biểu mẫu và nhận biết schema |
| Biến và môi trường | Các tệp .env / JSON, biến nội tuyến |
Môi trường được quản lý, chia sẻ với đồng bộ nhóm |
| Xác nhận | JavaScript trong các script yêu cầu | Xác nhận trực quan cộng với tạo script |
| Thực thi CI | httpyac send |
apidog run |
| Mocking và tài liệu | Không tích hợp sẵn | Máy chủ mock tích hợp sẵn và tài liệu tự động tạo |
| Tốt nhất cho | Các nhà phát triển muốn tệp văn bản dựa trên Git | Các nhóm muốn thiết kế, kiểm thử, mocking và tài liệu ở cùng một nơi |
Nếu bạn muốn giao diện trực quan, Apidog cho phép bạn xây dựng và sắp xếp các yêu cầu mà không cần viết tệp thủ công, sau đó chạy các kịch bản tương tự trong CI với apidog run. Tham khảo lệnh apidog run trình bày chi tiết về lệnh, các cờ môi trường và trình báo cáo. Bạn cũng nhận được một máy chủ mock và tài liệu trong cùng một không gian làm việc, điều mà một trình chạy tệp văn bản sẽ bỏ lại cho các công cụ khác. Nếu mocking là một nhu cầu thực sự, tổng hợp các công cụ mocking endpoint REST của chúng tôi sẽ đề cập đến các lựa chọn.
Tóm tắt chân thực: httpYac chiến thắng khi toàn bộ quy trình làm việc của bạn là “tệp trong Git, chạy trong trình chỉnh sửa, chạy lại trong CI” và nhóm của bạn toàn là nhà phát triển. Apidog chiến thắng khi bạn muốn một không gian làm việc trực quan được chia sẻ, môi trường được quản lý, mocking và tài liệu cùng với các lần chạy CI. Một số nhóm thậm chí còn sử dụng cả hai, với httpYac cho các kiểm tra cục bộ nhanh chóng và Apidog là nguồn đáng tin cậy của nhóm.
Các 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. Cả tiện ích mở rộng VS Code và CLI đều miễn phí để cài đặt và sử dụng. Không có cấp độ trả phí hoặc yêu cầu tài khoản để chạy các yêu cầu cục bộ hoặc trong CI.
httpYac khác gì so với tiện ích mở rộng REST Client?
Cả hai đều sử dụng cùng định dạng tệp .http, vì vậy các tệp phần lớn có thể di chuyển được. httpYac bổ sung một CLI độc lập cho các lần chạy headless và CI, xử lý môi trường rộng hơn, và một mô hình tạo script và xác nhận phong phú hơn. REST Client chỉ dành cho trình chỉnh sửa. Nếu bạn chỉ gửi các yêu cầu bên trong VS Code, cả hai đều hoạt động; nếu bạn cần chạy cùng các tệp trong một pipeline, CLI của httpYac là điểm khác biệt. Để có cái nhìn rộng hơn về các công cụ chỉnh sửa, hãy xem danh sách plugin VS Code để kiểm thử API của chúng tôi.
httpYac có thể thay thế Postman không?
Đối với một nhà phát triển muốn các yêu cầu văn bản thuần túy trong Git và các lần chạy CI, httpYac bao gồm nhiều chức năng mà mọi người sử dụng Postman, trừ GUI, các bộ sưu tập chia sẻ và mocking tích hợp sẵn. Nếu nhóm của bạn cần một không gian làm việc trực quan, môi trường được quản lý và mocking cùng nhau, một nền tảng như Apidog sẽ phù hợp hơn. So sánh các lựa chọn trong tổng hợp các client kiểm thử API của chúng tôi.
httpYac có hỗ trợ GraphQL và gRPC không?
httpYac xử lý các yêu cầu 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. Kiểm tra tài liệu chính thức để biết danh sách giao thức hiện tại, vì sự hỗ trợ phát triển giữa các bản phát hành. Đối với REST, định dạng .http bao gồm các động từ (verb), tiêu đề (header), phần thân (body) và luồng xác thực (auth flow) thông thường ngay khi cài đặt.
Kết luận
httpYac là một giải pháp rõ ràng cho một nhu cầu rõ ràng: gửi các yêu cầu HTTP từ các tệp văn bản thuần túy, chạy chúng trong VS Code và chạy lại chúng trong CI mà không cần bước xuất riêng biệt. Mô hình dựa trên Git, khả năng tạo script và CLI miễn phí của nó làm cho nó trở thành lựa chọn mạnh mẽ cho các nhóm tập trung vào nhà phát triển, những người muốn các yêu cầu của họ nằm trong kho lưu trữ. Điểm đánh đổi là mọi thứ đều giả định kiến thức về mã code, tệp và sự thành thạo của nhà phát triển.
Nếu bạn muốn xây dựng các yêu cầu một cách trực quan, chia sẻ môi trường được quản lý, tạo mock endpoint và tạo tài liệu trong khi vẫn chạy kiểm thử trong CI, Apidog sẽ bao gồm tất cả những điều đó trong một không gian làm việc duy nhất. Bạn có thể tải xuống Apidog và chạy bộ kiểm thử của bạn với apidog run, hoặc giữ httpYac để kiểm tra nhanh cục bộ và để Apidog trở thành nguồn đáng tin cậy của nhóm. Hãy chọn mô hình phù hợp với cách nhóm của bạn làm việc.
