So sánh văn bản API
So sánh hai đoạn văn bản theo dòng, từ, ký tự, câu hoặc JSON; nhận danh sách thay đổi, tỉ lệ giống nhau và bản diff dạng unified.
Gửi văn bản gốc qua a (hoặc old) và văn bản mới qua b (hoặc new). API trả về danh sách changes (mỗi phần là added, removed hoặc unchanged kèm nội dung), stats gồm số lượng thêm, xoá, giữ nguyên, tỉ lệ similarity (%) và identical khi không có thay đổi.
Chọn mức so sánh bằng mode: lines (mặc định, đếm theo dòng và trả thêm bản unified giống git diff), words, chars, sentences, hoặc json để so sánh cấu trúc hai tài liệu JSON sau khi định dạng lại. ignore_case và ignore_whitespace giúp bỏ qua khác biệt hoa thường và khoảng trắng. Với các mode khác, unified=true sẽ thêm bản patch; a_name, b_name và context (0-50 dòng, mặc định 3) điều chỉnh tiêu đề và số dòng ngữ cảnh.
Tổng độ dài hai văn bản tối đa 2.000.000 ký tự (body request tối đa 4 MB).
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mặc định | |
|---|---|---|---|---|---|
a | body | string | có | Văn bản gốc. Tên khác: old. | |
b | body | string | có | Văn bản mới. Tên khác: new. | |
mode | body|query | string | không | lines | Đơn vị so sánh: lines, words, chars, sentences hoặc json. |
ignore_case | body|query | boolean | không | false | Bỏ qua khác biệt chữ hoa/thường (lines, words, chars). |
ignore_whitespace | body|query | boolean | không | false | Bỏ qua khoảng trắng đầu/cuối dòng ở mode lines, và thay đổi khoảng trắng ở mode words. |
unified | body|query | boolean | không | false | Trả thêm bản unified diff cho các mode khác lines (mode lines luôn có). |
context | body|query | number | không | 3 | Số dòng ngữ cảnh trong unified diff (0-50). |
a_name | body|query | string | không | a | Tên file gốc trong tiêu đề unified diff. |
b_name | body|query | string | không | b | Tên file mới trong tiêu đề unified diff. |
Ví dụ
curl -X POST "https://apibox.io.vn/v1/text-diff" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"a":"one\ntwo\nthree","b":"one\n2\nthree\nfour"}'const res = await fetch('https://apibox.io.vn/v1/text-diff', {
method: 'POST',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"a": "one\ntwo\nthree",
"b": "one\n2\nthree\nfour"
}),
});
const data = await res.json();
console.log(data);import requests
res = requests.post(
"https://apibox.io.vn/v1/text-diff",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={"a": "one\ntwo\nthree", "b": "one\n2\nthree\nfour"},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/text-diff');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => '{"a":"one\\ntwo\\nthree","b":"one\\n2\\nthree\\nfour"}',
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));Kết quả trả về
{
"mode": "lines",
"identical": false,
"similarity": 50,
"stats": {
"added": 2,
"removed": 1,
"unchanged": 2,
"unit": "lines"
},
"changes": [
{
"type": "unchanged",
"value": "one\n",
"count": 1
},
{
"type": "removed",
"value": "two\n",
"count": 1
},
{
"type": "added",
"value": "2\n",
"count": 1
},
{
"type": "unchanged",
"value": "three\n",
"count": 1
},
{
"type": "added",
"value": "four\n",
"count": 1
}
],
"unified": "===================================================================\n--- a\n+++ b\n@@ -1,3 +1,4 @@\n one\n-two\n+2\n three\n+four\n"
}
Ứng dụng
- Hiển thị những thay đổi giữa hai phiên bản tài liệu, hợp đồng
- So sánh response API hoặc file cấu hình JSON khi viết test
- Tạo bản patch unified diff từ backend
- Đo mức độ giống nhau của hai văn bản (kiểm tra trùng lặp)
Hỏi đáp
Có lấy được bản diff kiểu git không?
Có. Ở mode mặc định lines, trường unified luôn chứa bản patch; với các mode khác hãy thêm unified=true.
Làm sao so sánh hai object JSON?
Dùng mode=json và gửi hai tài liệu dạng chuỗi JSON trong a và b. Chúng được định dạng lại rồi so sánh theo dòng, nên khác biệt về cách trình bày bị bỏ qua.
Tỉ lệ giống nhau được tính thế nào?
Bằng số đơn vị giữ nguyên chia cho tổng số giữ nguyên cộng với số lớn hơn giữa thêm và xoá, tính theo %. Đơn vị là dòng ở mode lines/json, ký tự ở các mode khác.
API liên quan
Tạo slug
Chuyển tiêu đề thành slug URL gọn gàng: bỏ dấu tiếng Việt (cả chữ đ), tuỳ chọn ký tự phân cách, giữ chữ hoa và giới hạn độ dài.
123Thống kê văn bản
Đếm số từ, ký tự, câu, đoạn và dòng; ước tính thời gian đọc và thời gian nói; liệt kê các từ xuất hiện nhiều nhất trong văn bản.
AaĐổi kiểu chữ
Chuyển văn bản sang chữ thường, CHỮ HOA, Title, Sentence, camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE hay dot.case.