- vừa được xem lúc

User-Agent trong giao tiếp giữa các Service

0 0 9

Người đăng: Vũ Nguyễn

Theo Viblo Asia

Khi sử dụng REST API để giao tiếp giữa các service, chúng ta thường không quan tâm tới user-agent, ví dụ khi dùng axios:

import axios from 'axios'; axios.get('https://api.example.com/user?ID=12345')

với package requests của Python:

import requests r = requests.get('https://api.example.com/user?ID=12345')

Lúc này ở một service khác, nếu có log lại các requests service thì sẽ ghi nhận user-agent như thế này:

"user_agent":"python-urllib3/1.26.5"

"user_agent":"axios/1.6.0"

Điều này sẽ gây khó khăn khi thực hiện các thao tác investigation lúc xảy ra bugs, hoặc khi cần monitor service xem có các traffic lạ gây DDOS hoặc crash service,... Một step nhỏ khi thực hiện request sẽ giải quyết được vấn đề này.

Với axios:

import axios from 'axios'; const axiosInstance = axios.create({ baseURL: 'https://api.example.com/', headers: { 'User-Agent': 'Service-A/1.0', }
}); // Sử dụng axiosInstance cho tất cả các request
axiosInstance.get('/users')

Với requests:

import requests s = requests.Session() s.headers.update({'User-Agent': 'Service-A/1.0'}) response1 = s.get('https://api.example.com/posts?post_id=123')
response2 = s.post('https://api.example.com/posts', json={'key': 'value'})

Việc khai báo rõ ràng User-Agent trong các service-to-service call mang lại giá trị to lớn trong việc giám sát và debug hệ thống. Thay vì chỉ thấy một request không rõ nguồn gốc, service đích sẽ nhận diện được ngay request đến từ "Service-A/1.0". Điều này giúp phát hiện nhanh chóng các request bất thường.

"user_agent":"Service-A/1.0"

Bên cạnh đó, việc sử dụng session hoặc axios instance còn tối ưu hóa hiệu suất bằng cách tái sử dụng connection pool, giúp giảm thiểu thời gian thiết lập kết nối.

P/S: Hi anh em, mình mới bắt đầu viết blog nên có thể sắp xếp câu cú, ngôn từ chưa được tốt. Cám ơn anh em đã đọc, có vấn đề gì anh em cứ comment.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Flutter - GetX - Using GetConnect to handle API request (Part 4)

Giới thiệu. Xin chào các bạn, lại là mình với series về GetX và Flutter.

0 0 351

- vừa được xem lúc

API vs WebSockets vs WebHooks: What to Choose?

. Khi xây dựng bất kì một ứng dụng nào, chúng ta đều cần phải có một cơ chế đáng tin cậy để giao tiếp giữa các thành phần của nó. Đây là khi APIs, WebSockets và WebHooks được ứng dụng vào.

0 0 101

- vừa được xem lúc

Sử dụng Fast JSON API serialization trong Ruby on Rails

Ở bài viết này chúng ta sẽ thử tạo 1 project API sử dụng gem fast_jsonapi cho serializer. Đầu tiên là tạo một project API mới. $ rails new rails-jsonapi --database=postgresql --skip-action-mailbox --skip-action-text --skip-spring -T --skip-turbolinks --api. .

0 0 131

- vừa được xem lúc

Test thử ba loại API chụp màn hình Windows

Hiện tại, Windows cung cấp khoảng ba cách để chụp màn hình. Thế thì cái nào là nhanh nhất? Tôi muốn test thử từng cái.

0 0 71

- vừa được xem lúc

Ngừng sử dụng REST cho API — GraphQL là cách tốt hơn

Mở đầu. REST đã được nhiều developers sử dụng để gửi dữ liệu qua HTTP trong khi GraphQL thường được trình bày như một công nghệ thay thế các API REST.

0 0 98

- vừa được xem lúc

Quản lý và sử dụng API trong Nuxt bằng cách sử dụng Repository Pattern

Mở đầu năm mới, à nhầm, mở đầu bài viết. Cái tên NuxtJS chắc hẳn cũng không còn xa lạ gì với những bạn yêu thích VueJS nữa, đương nhiên mình cũng là một chàng trai dành tình yêu to lớn cho frameworks này.

0 0 226