Uncategorized

Tạm biệt Postman với plugin HTTP Client của JetBrains

bye_postman

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 .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.jsonhttp-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

Leave a Reply

Your email address will not be published. Required fields are marked *