Ngày 05 tháng 10 năm 2023 - Máy tính
Trong VS Code có một phần mở rộng rất dễ sử dụng để kiểm thử API, tên là REST Client. Bạn có thể sử dụng phần mở rộng này trong VS Code để gửi các yêu cầu HTTP và nhận phản hồi. Cú pháp của nó đơn giản hơn so với lệnh i99bet cURL, vì vậy đây là một lựa chọn tuyệt vời cho các nhà phát triển khi kiểm thử API.
Bài viết này sẽ trình bày cách sử dụng phần mở rộng này bằng cách kết hợp với GitHub REST API. Toàn bộ bài viết gồm năm phần: sử dụng cơ bản, tải nội dung tệp tin vào làm yêu cầu, viết nhiều yêu cầu trong cùng một tệp tin, sử dụng biến hệ thống và môi trường, cũng như cấu hình và chọn môi trường đa dạng.
Trước khi bắt đầu, hãy đảm bảo rằng bạn đã cài đặt phần mở rộng REST Client trong VS Code (việc cài đặt rất đơn giản, chỉ cần tìm kiếm “REST Client” trong phần Extensions của VS Code).
!Cài đặt REST Client
1. Sử dụng cơ bản
Dưới đây là ví dụ về cách sử dụng REST Client cơ bản để gọi GitHub REST API và truy vấn các Issue của một kho lưu trữ (trong bài này chúng ta sử dụng kho công khai của tôi là leileiluoluo.github.io).
Để sử dụng REST Client trong VS Code, bạn chỉ cần tạo một tệp tin mới và đặt tên tệp tin với phần mở rộng .http
(hoặc .rest
).
Dưới đây là cách sử dụng REST Client để lấy 10 Issue đầu tiên từ kho leileiluoluo.github.io
:
GET
?page=1
&per_page=10
Accept: application/vnd.github+json
Khi bạn lưu nội dung trên dưới dạng một tệp tin .http
, phần mở rộng REST Client sẽ tự động phát hiện nội dung này và hiển thị nút “Send Request” phía trên dòng GET. Khi nhấn nút này, yêu cầu sẽ được gửi đi và sau đó bạn sẽ thấy một cửa sổ bên phải hiển thị mã trạng thái, Header, cũng như toàn bộ nội dung Body của phản hồi.
Hiệu quả như sau:
!Sử dụng cơ bản REST Client
99win club 2. Tải nội dung tệp tin vào làm yêu cầu
Trên đây là ví dụ về việc truy vấn Issues của một kho GitHub Nạp Tiền Nohu71 qua phương thức GET. Đối với các yêu cầu như POST mà cần có phần Body, bạn có thể áp dụng cú pháp sau:
POST
Authorization: Bearer ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{
"title": "Phát hiện một lỗi",
"body": "Hãy sửa ngay!"
}
Bạn có thể thấy ví dụ trên minh họa cách tạo một Issue mới cho kho leileiluoluo.github.io
. So với yêu cầu GET trước đó, bạn chỉ cần để trống một dòng sau URL và phần Header rồi điền vào phần Body.
Nếu phần Body quá dài, bạn cũng có thể trích xuất nó ra một tệp tin riêng biệt và sử dụng cú pháp sau để tải nội dung tệp tin vào làm phần Body:
POST
Authorization: Bearer ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
<@ ./body.json
3. Viết nhiều yêu cầu trong cùng một tệp tin
Hai tình huống trên khá đơn giản, nhưng trong thực tế, chúng ta thường muốn viết nhiều yêu cầu trong cùng một tệp tin .http
, và có thể xảy ra trường hợp yêu cầu tiếp theo phụ thuộc vào kết quả của yêu cầu trước đó. REST Client hỗ trợ điều này.
Ví dụ dưới đây bao gồm ba yêu cầu trong cùng một tệp tin (tạo Issue, lấy Issue vừa tạo, và cập nhật Issue vừa tạo), với mỗi yêu cầu đều phụ thuộc vào kết quả của yêu cầu trước đó.
@baseUrl =
@accessToken = ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# @name createIssue
POST {{baseUrl}}/issues
Authorization: Bearer {{accessToken}}
{
"title": "Phát hiện một lỗi",
"body": "Hãy sửa ngay!"
}
###
@newCreatedIssueNumber = {{createIssue.response.body.$.number}}
# @name getIssueByNumber
GET {{baseUrl}}/issues/{{newCreatedIssueNumber}}
###
# @name updateIssueByNumber
PATCH {{baseUrl}}/issues/{{newCreatedIssueNumber}}
Authorization: Bearer {{accessToken}}
{
"title": "Khẩn cấp, phát hiện một lỗi",
"body": "Hãy sửa ngay!!!"
}
Ba yêu cầu được phân chia bởi các dòng chứa nội dung ###
. Mỗi yêu cầu đều có một tên (ví dụ: # @name createIssue
), và các yêu cầu sau có thể truy xuất kết quả của các yêu cầu trước (ví dụ: @newCreatedIssueNumber = {{createIssue.response.body.$.number}}
). Ngoài ra, ở phần đầu tệp tin, chúng ta cũng khai báo một số biến chung bằng cách sử dụng cú pháp @key = value
.
4. Sử dụng biến hệ thống và môi trường
REST Client hỗ trợ đọc các biến môi trường hệ thống cũng như từ tệp tin .env
, đồng thời cung cấp các biến tiện ích như ngày giờ và UUID để hỗ trợ tổ chức phần Header và Body của yêu cầu.
Xem ví dụ dưới đây:
POST HTTP/1.1
Content-Type: application/json
{
"user_name": "{{$dotenv USERNAME}}", // Đọc biến môi trường từ tệp .env cùng thư mục với tệp .http
"request_id": "{{$guid}}", // Sinh một UUID 36 ký tự, ví dụ: f63ebc18-216b-4c8e-8d51-9ab66bbe39fc
"updated_at": "{{$timestamp}}", // Sinh một timestamp biểu diễn số giây từ 1970-01-01 đến hiện tại, ví dụ: 1696475647
"created_at": "{{$timestamp -1 d}}", // Sinh một timestamp với giá trị bị dịch chuyển, ví dụ: 1696389771
"custom_date": "{{$datetime 'YYYY-MM-DD'}}", // Định dạng ngày tháng, ví dụ: 2023-10-05
"secret": "{{$processEnv SECRET}}" // Đọc biến môi trường hệ thống
}
Bạn có thể thấy rằng các trường trong phần Body của yêu cầu trên có thể được đọc từ biến môi trường hệ thống, từ tệp tin .env
, hoặc được sinh ra từ các biến tiện ích (timestamp và UUID).
5. Cấu hình đa môi trường và chọn môi trường để thực thi
REST Client còn hỗ trợ định nghĩa nhiều môi trường khác nhau, và khi thực thi các yêu cầu trong tệp tin .http
, bạn có thể chọn môi trường để thực thi.
Dưới đây là ví dụ về cách thêm thông tin môi trường REST Client vào tệp cấu hình settings.json
trong VS Code:
// settings.json
"rest-client.environmentVariables": {
"$shared": {
"strict": true
},
"dev": {
"address": "
"token": "xxxxxx"
},
"qa": {
"address": "
"token": "xxxxxx"
},
"production": {
"address": "
"token": "xxxxxx"
}
}
Dưới đây là nội dung của tệp tin .http
:
GET {{address}}/comments/1 HTTP/1.1
Authorization: Bearer {{token}}
Khi thực thi yêu cầu, ở góc dưới bên phải của VS Code sẽ có một nút chọn môi trường. Nhấn vào nút này và chọn môi trường mong muốn để thực thi.
Hiệu quả như sau:
!Cấu hình đa môi trường và chọn môi trường thực thi REST Client
Như vậy, bài viết này đã khám phá phần mở rộng REST Client trong VS Code và thấy rằng nó rất phù hợp để thực hiện các bài kiểm thử API đơn giản hàng ngày.
[1] REST Client | Visual Studio Marketplace - marketplace.visualstudio.com [2] REST API để xem và quản lý issues | Tài liệu GitHub - docs.github.com ![]( #Công cụ sử dụng #Kiểm thử tự động