Plugin HTTP Client trong các IDE của JetBrains là một công cụ mạnh mẽ giúp anh/chị/em lập trình có thể tạo HTTP request và xem các HTTP response trực tiếp từ trong IDE mà không cần đến các ứng dụng khác – ví dụ Postman. Sử dụng plugin này sẽ giúp chúng ta tiết kiệm được tầm 500 – 600 Mb RAM (Postman) và tránh việc phải tab ra tab vào nhiều lần.
Thật vi diệu là tôi sử dụng hàng của JetBrains cũng hơn 5 năm rồi nhưng gần đây mới biết tới và sử dụng nó thay cho Postman
Tác giả blog
Đầu tiên, muốn sử dụng được plugin thì ta cần cài đặt, nó đã có sẵn trên marketplace của JetBrains. Sau khi cài đặt thì ta cần tạo một file để viết các request, thời điểm bài viết được đăng lên thì plugin đang hỗ trợ 2 định dạng file là .rest và .http.
Syntax cơ bản
Để tạo một HTTP request, ta sử dụng cú pháp sau:
Method Request-URI HTTP-Version
Header-field: Header-value
Request-Body
Ví dụ:
GET http://example.com/api/users HTTP/1.1
Content-Type: application/json
{
"username": "admin",
"password": "1"
}
Các method hỗ trợ bao gồm: GET, POST, PUT, DELETE
Đặt tên cho request
Để dễ dàng tìm kiếm và quản lý các request, ta có thể đặt tên cho nó. Điều này có thể được thực hiện bằng cách thêm một dòng comment bắt đầu bằng ###
, # @name
, hoặc # @name =
// @name = GetUserDetails
GET http://example.com/api/user/123
Thêm thông tin authentication
Ta có thể thêm thông tin xác thực vào HTTP request của mình theo các kiểu basic auth và token auth:
Với basic auth:
// Basic authentication
GET http://example.com/api/data
Authorization: Basic username password
Hoặc với token được gắn trong header:
// Token authentication
GET http://example.com/api/data
Authorization: Bearer token_value
Sử dụng biến
Plugin cũng hỗ trợ sử dụng biến để parametrize các phần của request như host, port, path, query parameters, header values, và nhiều hơn nữa. Ta có thể sử dụng biến trong các file environment hoặc trong cùng một file HTTP request.
Environment variables
Biến môi trường được định nghĩa trong các file môi trường (http-client.env.json
và http-client.private.env.json
). Điều này giúp bạn chuyển đổi giữa các môi trường khác nhau, ví dụ như development và production.
// http-client.env.json
{
"development": {
"host": "localhost",
"port": 8080
},
"production": {
"host": "api.example.com",
"port": 443
}
}
Sử dụng biến môi trường trong request như sau:
GET http://{{host}}:{{port}}/api/users
Biến In-Place
Biến in-place có phạm vi chỉ trong cùng một file HTTP request. Để tạo một biến in-place, sử dụng cú pháp @
sau đó là tên biến.
@host = api.example.com
GET http://{{host}}/api/data
Dynamic Variables
Plugin cung cấp các biến động như $uuid
, $timestamp
, $randomInt
, và nhiều biến khác giúp tạo giá trị động mỗi khi bạn chạy request.
GET http://example.com/api/data?id={{$uuid}}×tamp={{$timestamp}}
Xử lý response
Bạn có thể xử lý response bằng cách sử dụng JavaScript. Có thể lưu response vào một file, xử lý giá trị và lưu vào biến global, hoặc thậm chí là gọi các API khác để tạo thành một flow end to end.
GET http://example.com/api/data
> /path/to/responseHandler.js
Ví dụ lưu cookie vào biến global:
GET http://example.com/api/data
> {%
client.global.set("my_cookie", response.headers.valuesOf("Set-Cookie")[0]);
%}
Cá nhân tôi thấy plugin này khá ngon và tiện để chạy test các api trong quá trình code. Nhờ tận dụng các tính năng như biến, script thì có thể giảm tải được nhiều công đoạn manual như login lấy cookie chẳng hạn.
Trong khuôn khổ bài viết này tôi chỉ giới thiệu qua vài tính năng cơ bản của HTTP Client, chi tiết về tính năng của plugin được mô tả đầy đủ trong documents của JetBrains: https://www.jetbrains.com/help/idea/http-client-in-product-code-editor.html