Bạn đã xem một ứng dụng thực hiện yêu cầu trong trình duyệt. Nó hoạt động. Dữ liệu có ngay trong tab Mạng (Network). Giờ đây, bạn muốn có cùng một cuộc gọi đó dưới dạng một điểm cuối (endpoint) được ghi tài liệu mà bạn có thể lưu, mô phỏng và kiểm thử, mà không cần nhập lại URL, tiêu đề và thân JSON theo cách thủ công.
Khoảng cách giữa “lưu lượng truy cập tôi có thể thấy” và “một điểm cuối tôi có thể tái sử dụng” là thứ mà tệp HAR giúp thu hẹp. Trình duyệt của bạn đã ghi lại mọi yêu cầu và phản hồi mà nó thực hiện. Xuất bản ghi đó, đưa nó cho Apidog, và mỗi cuộc gọi được ghi lại sẽ trở thành một điểm cuối thực trong dự án của bạn. Hướng dẫn này sẽ chỉ dẫn toàn bộ quá trình: ghi lại HAR trong Chrome DevTools, nhập nó với các tùy chọn phù hợp và dọn dẹp các điểm cuối được tạo để danh sách luôn hữu ích. Để có cái nhìn rộng hơn về các quy trình ghi lại, hướng dẫn của chúng tôi về các công cụ ghi lại gói tin với Apidog sẽ đề cập đến các khía cạnh liên quan.
Bạn có thể Tải xuống Apidog miễn phí và làm theo trên các màn hình tương tự.
Tệp HAR là gì và tại sao lưu lượng truy cập được ghi lại đáng để giữ
HAR là viết tắt của HTTP Archive. Theo tài liệu của Apidog, một tệp .har là “một tệp định dạng JSON được sử dụng để ghi nhật ký tương tác của trình duyệt web với một trang web. Nó ghi lại các yêu cầu web, phản hồi, tiêu đề và các dữ liệu khác được gửi giữa trình duyệt và máy chủ.”
Nói một cách đơn giản: tệp HAR là một bản ghi đầy đủ của một phiên duyệt web. Mọi GET, mọi POST, các tiêu đề yêu cầu, các thân phản hồi, thời gian. Vì nó là JSON, nên nó dễ dàng di chuyển. Bạn có thể gửi email, đính kèm vào báo cáo lỗi, hoặc đưa nó vào một công cụ biết cách đọc.
Phần cuối cùng đó là lý do tại sao nó quan trọng ở đây. Một phiên được ghi lại là một bản ghi về cách một API thực sự hoạt động trong thực tế, chứ không phải cách một đặc tả mô tả nó nên hoạt động. Khi bạn biến bản ghi đó thành các điểm cuối, bạn sẽ nhận được một vài lợi ích miễn phí:
- Một hình dạng yêu cầu thực tế. URL, tham số truy vấn, tiêu đề và thân yêu cầu chính xác mà ứng dụng đã gửi, không phải là một sự đoán.
- Một phản hồi thực tế. Mã trạng thái và tải trọng mà máy chủ trả về, bạn có thể sử dụng làm giả lập (mock) hoặc xác nhận kiểm thử.
- Điểm khởi đầu cho tài liệu. Một API nội bộ không có tài liệu sẽ trở thành một tập hợp các điểm cuối được đặt tên mà bạn có thể chú thích.
Điều này rất tiện lợi khi bạn kế thừa một dịch vụ không có đặc tả OpenAPI, khi bạn đang thực hiện kỹ thuật đảo ngược cách một tiện ích của bên thứ ba giao tiếp với phần phụ trợ của nó, hoặc khi bạn muốn tái tạo một lỗi với cuộc gọi chính xác đã kích hoạt nó.
Bước 1: Ghi lại HAR trong DevTools của trình duyệt của bạn
Việc ghi lại diễn ra trong trình duyệt của bạn, không phải trong Apidog. Chrome và Edge đều sử dụng cùng một DevTools, vì vậy các bước là giống hệt nhau. Giả sử bạn muốn ghi lại lưu lượng truy cập phía sau một trang lịch sử đơn hàng.
- Mở trang bạn muốn ghi lại. Đăng nhập trước nếu API cần một phiên, vì HAR cũng sẽ mang theo các yêu cầu đó.
- Mở Công cụ dành cho nhà phát triển (Developer Tools). Nhấn
F12, hoặcCtrl+Shift+Itrên Windows và Linux, hoặcCmd+Opt+Itrên Mac. - Chuyển đến tab Mạng (Network). Đây là nơi DevTools liệt kê mọi yêu cầu mà trang thực hiện.
- Làm mới trang, hoặc nhấp qua các hành động mà bạn muốn ghi lại lưu lượng truy cập. Tải chế độ xem lịch sử đơn hàng sẽ kích hoạt các cuộc gọi đến
/api/orders,/api/orders/{id}và bất kỳ thứ gì khác mà trang cần. Mỗi cuộc gọi sẽ xuất hiện dưới dạng một hàng. - Nhấp chuột phải vào bất kỳ hàng yêu cầu nào và chọn Lưu tất cả dưới dạng HAR với nội dung (Save all as HAR with content). Chọn một vị trí và lưu tệp, ví dụ
order-history.har. Nếu cách diễn đạt menu làm bạn bối rối, tài liệu tham khảo Mạng của Chrome DevTools mô tả cùng một luồng ghi lại và xuất.
Phần “với nội dung” đó rất quan trọng. Nó cho DevTools biết phải bao gồm cả thân phản hồi, không chỉ siêu dữ liệu yêu cầu. Nếu không có chúng, các điểm cuối đã nhập của bạn sẽ có hình dạng yêu cầu nhưng không có phản hồi ví dụ.
Một kiểm tra nhanh trước khi bạn rời khỏi trình duyệt: nếu bạn mở tệp .har trong trình soạn thảo văn bản, nó là JSON có thể đọc được. Bạn sẽ thấy một mảng entries trong đó mỗi mục có một đối tượng request và response. Đó là cấu trúc mà Apidog đọc.
Một điều cần lưu ý. Một lần tải trang kéo theo nhiều hơn các cuộc gọi API. Nó cũng tìm nạp hình ảnh, biểu định kiểu và tập lệnh, và mỗi thứ đó đều có trong HAR. Bạn không cần phải lọc chúng ra trong trình duyệt; Apidog cung cấp cho bạn một công tắc để loại bỏ chúng khi nhập, sẽ được đề cập tiếp theo.
Bước 2: Nhập HAR vào Apidog
Sau khi tệp đã được lưu, hãy chuyển sang Apidog. Trình nhập nằm ở một nơi.
- Mở dự án của bạn và đi tới Cài đặt (Settings) > Nhập dữ liệu (Import Data) > Thủ công (Manual).
- Chọn HAR làm định dạng.
- Tải lên tệp
.harcủa bạn, ví dụorder-history.harmà bạn đã lưu cách đây ít phút.
Trước khi bạn xác nhận, Apidog hiển thị ba tùy chọn nhập. Chúng quyết định kết quả sẽ gọn gàng đến mức nào, vì vậy đáng để hiểu từng tùy chọn thay vì chỉ nhấp qua.
Tùy chọn 1: Cách xử lý BaseURL
Mỗi yêu cầu được ghi lại đều có một URL đầy đủ, chẳng hạn như https://api.shop.example.com/v1/orders/123. Bạn có hai lựa chọn để xử lý phần host:
- Mã hóa cứng (Hardcode) giữ BaseURL bên trong đường dẫn của mỗi điểm cuối. Mỗi điểm cuối mang tiền tố
https://api.shop.example.comđầy đủ. - Xóa (Được khuyến nghị) (Remove (Recommended)) loại bỏ BaseURL để đường dẫn điểm cuối trở thành
/v1/orders/123. Host sau đó được quản lý toàn cầu thông qua các biến môi trường.
Hãy chọn tùy chọn Xóa (Remove) trừ khi bạn có lý do đặc biệt. Đó là cài đặt được khuyến nghị vì một lý do: khi URL cơ sở nằm trong một biến môi trường, bạn có thể trỏ cùng các điểm cuối đó đến môi trường sản xuất, môi trường staging hoặc một máy chủ cục bộ bằng cách chuyển đổi môi trường, mà không cần chỉnh sửa các điểm cuối. Việc mã hóa cứng khóa mỗi điểm cuối vào máy chủ mà bạn đã ghi lại, điều này sẽ trở nên khó khăn ngay khi bạn cần kiểm thử trên một máy chủ khác.
Tùy chọn 2: Loại trừ tài nguyên tĩnh
Đây là công tắc giúp bạn tránh khỏi một danh sách điểm cuối lộn xộn. Tùy chọn Tài nguyên tĩnh (Static Resource), được đặt thành Loại trừ (Exclude), yêu cầu Apidog bỏ qua các tệp hình ảnh, CSS và JavaScript đã ghi lại. Một lần tải trang có thể tạo ra hàng chục tệp đó, và không có tệp nào trong số đó là điểm cuối API mà bạn muốn ghi tài liệu.
Bật Loại trừ (Exclude) cho gần như mọi lần nhập. Những gì còn lại sau khi lọc là lưu lượng truy cập API thực tế: các cuộc gọi JSON đến /api/orders và các yêu cầu tương tự, chứ không phải yêu cầu cho logo.png.
Tùy chọn 3: Tạo một trường hợp kiểm thử cho mỗi điểm cuối
Tùy chọn thứ ba là Tạo trường hợp điểm cuối (Endpoint Case Generation). Bật nó ON và Apidog sẽ tạo một trường hợp kiểm thử mặc định cho mỗi điểm cuối khi nó được nhập. Một trường hợp kiểm thử là một lệnh gọi được lưu trữ, có thể chạy được của điểm cuối với các giá trị đã được ghi lại đã được điền sẵn.
Đây là một bước nhỏ nhưng mang lại hiệu quả về sau. Nếu mục tiêu của bạn là kiểm thử các điểm cuối này, việc có sẵn một trường hợp cho mỗi điểm cuối có nghĩa là bạn có thể chạy ngay lập tức thay vì xây dựng từ đầu. Nếu hiện tại bạn chỉ muốn tài liệu, bạn có thể tắt tùy chọn này và thêm các trường hợp sau.
Xác nhận nhập. Apidog đọc tệp HAR, áp dụng các tùy chọn của bạn và chuyển đổi các tương tác trình duyệt đã ghi thành các điểm cuối API trong dự án của bạn. Mở cây điểm cuối và bạn sẽ thấy chúng được nhóm lại và sẵn sàng.
Đây là một ví dụ gần đúng về một điểm cuối đã nhập sau khi nó được đưa vào, sử dụng lệnh gọi đơn hàng làm ví dụ:
GET /v1/orders/123
Host: api.shop.example.com
Authorization: Bearer <token-from-capture>
Accept: application/json
Và phản hồi được ghi lại mà Apidog lưu trữ kèm theo:
{
"id": 123,
"status": "shipped",
"total": 48.5,
"currency": "USD",
"items": [
{ "sku": "TSHIRT-BLK-M", "qty": 2, "price": 19.25 }
],
"createdAt": "2026-07-14T09:31:00Z"
}
Phản hồi đó là dữ liệu thực mà máy chủ đã trả về, điều này làm cho nó trở thành cơ sở vững chắc cho một mock hoặc một xác nhận kiểm thử.
Bước 3: Dọn dẹp các điểm cuối đã tạo
Việc nhập HAR là một bước đầu tiên nhanh chóng, không phải là một định nghĩa API hoàn chỉnh. Lưu lượng truy cập được ghi lại vốn dĩ lộn xộn, vì vậy hãy dành vài phút để sắp xếp lại kết quả.
- Loại bỏ nhiễu. Ngay cả khi tùy chọn Tài nguyên tĩnh (Static Resource) được đặt thành Loại trừ (Exclude), bạn vẫn có thể tìm thấy các ping phân tích, kiểm tra tình trạng hoặc các cuộc gọi của bên thứ ba mà bạn không quan tâm. Xóa các điểm cuối bạn sẽ không sử dụng để cây phản ánh API thực tế của bạn.
- Đổi tên và nhóm. Các điểm cuối được ghi lại được đặt tên theo đường dẫn của chúng, chức năng nhưng phẳng. Hãy đặt cho chúng những cái tên rõ ràng (“Lấy đơn hàng theo ID” thay vì
/v1/orders/123) và sắp xếp chúng vào các thư mục phù hợp với cấu trúc API của bạn. - Sửa các tham số đường dẫn. Một bản ghi của
/v1/orders/123được nhập dưới dạng đường dẫn cố định. Nếu123thực sự là một ID đơn hàng, hãy chỉnh sửa điểm cuối để đoạn đó trở thành một tham số đường dẫn{orderId}. Thay đổi đó biến một cuộc gọi đã ghi duy nhất thành một điểm cuối có thể tái sử dụng, hoạt động cho bất kỳ đơn hàng nào. - Xóa bỏ bí mật trước khi chia sẻ. Điều này dễ quên. HAR của bạn đã ghi lại bất kỳ mã thông báo xác thực nào đang hoạt động trong phiên đó, và nó đã theo vào các tiêu đề. Trước khi bạn cam kết dự án hoặc chia sẻ nó với đồng đội, hãy chuyển mã thông báo vào các biến môi trường và xóa các thông tin đăng nhập đã ghi lại khỏi các ví dụ. Tài liệu Stripe cũng nhấn mạnh điều tương tự về việc không bao giờ để khóa hoạt động bị rò rỉ vào các tạo phẩm được chia sẻ, và HAR chính xác là loại tạo phẩm làm rò rỉ chúng.
- Kiểm tra sơ bộ nội dung (bodies). Nếu một nội dung trống nơi bạn mong đợi dữ liệu, rất có thể bạn đã xuất mà không có tùy chọn “with content”. Hãy ghi lại bằng cách sử dụng Lưu tất cả dưới dạng HAR với nội dung (Save all as HAR with content) và nhập lại.
Khi các điểm cuối đã sạch sẽ, chúng hoạt động giống như bất kỳ điểm cuối nào khác trong Apidog. Bạn có thể ghi tài liệu cho chúng, tạo một mock từ mỗi phản hồi và xây dựng các bài kiểm thử. Hướng dẫn viết kịch bản kiểm thử trong Apidog sẽ tiếp nối tự nhiên từ đây, và nếu bạn muốn mã client có kiểu từ các điểm cuối này, hãy xem cách tạo mã client với Apidog.
Các biến thể và giới hạn thực tế
Một vài tình huống thường xảy ra đủ để cần được lưu ý.
Chưa có công cụ ghi tự động
Bạn có thể mong đợi Apidog sẽ hoạt động ngầm và ghi lại lưu lượng truy cập trực tiếp, giống như một proxy. Nó không làm vậy, và điều đáng nói thẳng về điều đó. Các tài liệu nêu rõ: “Apidog hiện không hỗ trợ chức năng ghi lại điểm cuối tự động, nhưng có kế hoạch hỗ trợ trong tương lai.”
Vì vậy, con đường được hỗ trợ hiện nay chính xác là con đường trong hướng dẫn này: ghi lại bằng DevTools của trình duyệt của bạn, xuất HAR và nhập nó. Luồng được khuyến nghị mà tài liệu mô tả là mở DevTools trong khi bạn thực hiện một điểm cuối trong trình duyệt, xuất HAR khi bạn hoàn thành, nhập nó vào Apidog chỉ bằng một cú nhấp chuột, sau đó tạo một kịch bản kiểm thử và nhập tất cả các yêu cầu để phát lại. Đó là một bước ghi lại thủ công, sau đó là một lần nhập bằng một cú nhấp chuột, không phải là một trình ghi trực tiếp. Khi tính năng ghi tự động được phát hành, phần này sẽ thay đổi, nhưng đừng chờ đợi nó.
Tiện ích mở rộng trình duyệt Apidog là một công cụ khác
Có một Tiện ích mở rộng trình duyệt Apidog, và dễ dàng cho rằng nó ghi lại lưu lượng HAR. Không phải vậy. Tiện ích mở rộng cho phép bạn sử dụng tính năng kiểm thử và gỡ lỗi API của Apidog trực tiếp trong trình duyệt mà không cần mở ứng dụng khách trên máy tính để bàn. Nó là về việc chạy các yêu cầu, không phải ghi lại chúng.
Việc ghi lại HAR đến từ chính DevTools của trình duyệt của bạn, chấm hết. Nếu bạn sử dụng tiện ích mở rộng để kiểm thử, hãy biết rằng trình duyệt áp đặt các giới hạn lên nó: nó chặn một số tiêu đề nhất định như Cookie, Host, Origin và Content-Length, nó sẽ không gửi các thân yêu cầu trên các yêu cầu GET hoặc HEAD, và nó không thể tiếp cận mã cục bộ hoặc cơ sở dữ liệu phía sau máy của bạn. Để ghi lại lưu lượng truy cập để nhập, hãy gắn bó với DevTools và xuất HAR. Đối với việc gỡ lỗi nặng hơn yêu cầu kiểm soát tiêu đề đầy đủ, Apidog Desktop Client không có giới hạn nào do trình duyệt áp đặt.
Các định dạng khác nhập theo cách tương tự
HAR là một trong số các định dạng mà màn hình Cài đặt (Settings) > Nhập dữ liệu (Import Data) > Thủ công (Manual) chấp nhận. Nếu bạn đã có tệp OpenAPI hoặc Swagger, việc nhập nó sẽ cho bạn kết quả sạch hơn so với việc ghi lại, vì một spec được cấu trúc có chủ đích. Hướng dẫn của chúng tôi về di chuyển tài liệu API Swagger sang Apidog đề cập đến tuyến đường đó, và nếu bạn đến từ Postman, hướng dẫn di chuyển môi trường và bộ sưu tập Postman cũng vậy. Hãy sử dụng HAR khi không tồn tại một spec thực tế và lưu lượng truy cập được ghi lại là bản ghi tốt nhất mà bạn có.
Tự động hóa quy trình làm việc với Apidog CLI
Việc nhập tệp HAR không nhất thiết phải là một bước GUI. Apidog CLI có lệnh import đọc trực tiếp tệp HAR, đây là điều bạn muốn khi việc ghi lại xảy ra trên máy chủ, khi bạn viết tập lệnh nhập trong một pipeline, hoặc khi bạn để một tác nhân mã hóa AI biến một bản ghi thành các điểm cuối:
npm install -g apidog-cli
apidog login --with-token <YOUR_ACCESS_TOKEN>
# Biến một HAR đã ghi được thành các điểm cuối trong dự án của bạn
apidog import --project <PROJECT_ID> --format har --file ./capture.har
Cờ --format cũng chấp nhận openapi, postman, wsdl, insomnia, v.v., vì vậy một lệnh có thể bao gồm hầu hết các nguồn nhập. Khi các điểm cuối tồn tại và bạn đã lưu chúng vào một kịch bản kiểm thử, hãy chạy kịch bản đó không đầu trong CI:
apidog run --access-token $APIDOG_ACCESS_TOKEN \
-t <SCENARIO_ID> -e <ENV_ID> -r cli
Ở đây -t là id kịch bản kiểm thử đã lưu, -e là id môi trường (các biến môi trường tương tự chứa BaseURL của bạn), và -r chọn trình báo cáo, cli cho đầu ra console. Xây dựng kịch bản với hướng dẫn viết kịch bản kiểm thử trong Apidog, sau đó kết nối cả hai lệnh vào pipeline của bạn với hướng dẫn CI/CD Apidog CLI.
Câu hỏi thường gặp
Trình duyệt nào có thể xuất tệp HAR?
Bất kỳ trình duyệt nào dựa trên Chromium có DevTools đều làm theo cùng một cách, vì vậy Chrome và Edge đều sử dụng tab Mạng (Network) và mục menu Lưu tất cả dưới dạng HAR với nội dung (Save all as HAR with content). Tài liệu Apidog đề cập cụ thể đến đường dẫn của Chrome và Edge. Các trình duyệt khác có menu xuất riêng, nhưng nhãn có thể khác, vì vậy hãy khớp với cách diễn đạt của DevTools của trình duyệt của bạn.
Danh sách điểm cuối đã nhập của tôi rất lớn. Có gì sai sót?
Bạn có thể đã để Tài nguyên tĩnh (Static Resource) được đặt để bao gồm mọi thứ. Một lần tải trang kéo theo hình ảnh, CSS và tập lệnh, và tất cả chúng đều có trong HAR. Hãy nhập lại tệp với tùy chọn Tài nguyên tĩnh (Static Resource) được đặt thành Loại trừ (Exclude), và danh sách sẽ thu hẹp lại thành các cuộc gọi API thực tế. Bạn cũng có thể xóa thủ công các mục thừa sau đó.
Tôi nên chọn Mã hóa cứng (Hardcode) hay Xóa (Remove) cho BaseURL?
Chọn Xóa (Được khuyến nghị) (Remove (Recommended)) trong hầu hết các trường hợp. Nó loại bỏ host khỏi đường dẫn của mỗi điểm cuối để bạn quản lý nó toàn cầu thông qua một biến môi trường, cho phép bạn chuyển đổi giữa môi trường production, staging và local mà không cần chỉnh sửa các điểm cuối. Cấu hình tương tự đó là những gì một kịch bản kiểm thử trong Apidog đọc khi nó chạy. Chỉ chọn Mã hóa cứng (Hardcode) khi bạn đặc biệt muốn URL đầy đủ được nhúng vào mỗi đường dẫn.
HAR có bao gồm mã thông báo xác thực của tôi không?
Có, và đó là điều cần lưu ý. HAR ghi lại các tiêu đề thực đã được gửi trong phiên, vì vậy bất kỳ mã thông báo bearer hoặc cookie nào đang hoạt động đều có trong tệp. Hãy coi HAR như một bí mật: đừng dán nó vào một vấn đề công khai, và sau khi nhập, hãy chuyển thông tin đăng nhập vào các biến môi trường và xóa chúng khỏi các ví dụ đã lưu trước khi chia sẻ dự án.
Tôi có thể bỏ qua GUI và nhập HAR từ dòng lệnh không?
Có. Lệnh apidog import --project <id> --format har --file <path> của Apidog CLI sẽ đưa HAR vào dự án của bạn mà không cần mở ứng dụng, đây là điều bạn muốn khi việc ghi lại xảy ra trên máy chủ hoặc bên trong một tác vụ CI. GUI vẫn cung cấp cho bạn các tùy chọn nhập tương tác (xử lý BaseURL, lọc Tài nguyên tĩnh) cho một lần ghi lại duy nhất, vì vậy hãy chọn bất kỳ cách nào phù hợp: CLI cho các lần nhập theo tập lệnh hoặc do tác nhân điều khiển, GUI khi bạn muốn điều chỉnh việc nhập thủ công. Sau khi nhập, apidog run sẽ phát lại các kịch bản kiểm thử mà bạn xây dựng từ các điểm cuối đó.
Tổng kết
Một tệp HAR là cầu nối giữa lưu lượng truy cập bạn có thể thấy và các điểm cuối bạn có thể tái sử dụng. Ghi lại phiên trong DevTools của trình duyệt của bạn với Lưu tất cả dưới dạng HAR với nội dung (Save all as HAR with content), nhập nó thông qua Cài đặt (Settings) > Nhập dữ liệu (Import Data) > Thủ công (Manual) với tùy chọn Xóa (Remove) cho BaseURL và Tài nguyên tĩnh (Static Resource) được đặt thành Loại trừ (Exclude), sau đó dành vài phút để đổi tên, tham số hóa và loại bỏ các bí mật. Những gì bạn nhận được là một bộ điểm cuối hoạt động mà bạn có thể ghi tài liệu, mô phỏng và kiểm thử.
Sẵn sàng biến bản ghi tiếp theo của bạn thành các điểm cuối thực tế? Tải xuống Apidog và dùng thử miễn phí, không yêu cầu thẻ tín dụng.
