DEV Community

Cover image for httpbin là gì? Các Endpoint, Hướng dẫn sử dụng và Công cụ thay thế
Sebastian Petrus
Sebastian Petrus

Posted on • Originally published at apidog.com

httpbin là gì? Các Endpoint, Hướng dẫn sử dụng và Công cụ thay thế

Nếu bạn cần kiểm tra HTTP client mà không muốn dựng backend thật, hãy dùng httpbin. Dịch vụ này nhận request và trả lại JSON mô tả chính request đó: headers, query params, body, IP nguồn, auth header... Nhờ vậy bạn có thể debug nhanh User-Agent, xác nhận Authorization có được gửi đúng không, hoặc ép client xử lý lỗi 500. Bạn có thể gọi httpbin bằng curl, script test, hoặc một API client như Apidog. Dịch vụ công khai nằm tại httpbin.org, mã nguồn mở theo giấy phép ISC.

Thử Apidog ngay hôm nay

httpbin là gì?

httpbin là một service HTTP request/response. Bạn gửi request đến một endpoint, httpbin trả về JSON mô tả request mà server đã nhận. Nó được tạo bởi Kenneth Reitz, tác giả thư viện Python requests, và được viết bằng Python với Flask.

Ví dụ: để kiểm tra HTTP client của bạn có gửi đúng header hay không, gọi:

curl https://httpbin.org/headers
Enter fullscreen mode Exit fullscreen mode

Response sẽ liệt kê các header mà httpbin nhận được. Không cần database, auth flow, backend giả lập hay setup phức tạp.

Phiên bản public tại http://httpbin.org phù hợp cho kiểm tra nhanh. Tuy nhiên, vì đây là dịch vụ miễn phí dùng chung, nó có thể chậm hoặc tạm thời không khả dụng. Mã hiện nằm trong repo GitHub postmanlabs/httpbin, và cũng có các nhánh cộng đồng như của Kong. Nếu bạn dùng httpbin trong CI hoặc test lặp lại, nên tự host bằng Docker.

Các endpoint httpbin nên biết

Dưới đây là các endpoint thường dùng khi kiểm thử HTTP client:

Endpoint Dùng để làm gì
/get Trả về query params, headers và IP nguồn của request GET
/post Trả về form data, JSON body, raw body và headers của request POST
/put, /patch, /delete Kiểm tra các HTTP method tương ứng
/status/{codes} Trả về status code chỉ định, ví dụ /status/404, /status/503
/headers Trả về các request headers mà server nhận được
/ip Trả về IP nguồn
/user-agent Trả về chuỗi User-Agent
/delay/{n} Delay n giây trước khi phản hồi, tối đa 10 giây
/basic-auth/{user}/{passwd} Kiểm tra Basic Auth
/bearer Kiểm tra Bearer token trong header Authorization
/redirect/{n} Redirect n lần để kiểm tra redirect handling
/cookies Trả về cookies mà client gửi
/uuid Trả về UUID ngẫu nhiên
/anything Echo toàn bộ request, bất kể HTTP method

Hai endpoint hữu ích nhất khi test logic lỗi là:

/status/{code}
/delay/{n}
Enter fullscreen mode Exit fullscreen mode

Ví dụ:

curl -i https://httpbin.org/status/429
curl -i https://httpbin.org/delay/5
Enter fullscreen mode Exit fullscreen mode

Dùng chúng để kiểm tra retry, timeout, fallback UI hoặc circuit breaker. Nếu bạn cần response giả có cấu trúc thay vì chỉ echo request, hãy kết hợp với API giả để kiểm tra dữ liệu.

Cách dùng httpbin để kiểm tra HTTP client

1. Kiểm tra query params và headers

Gửi request GET:

curl "https://httpbin.org/get?tool=apidog&check=headers"
Enter fullscreen mode Exit fullscreen mode

Bạn sẽ nhận JSON tương tự:

{
  "args": {
    "check": "headers",
    "tool": "apidog"
  },
  "headers": {
    "Accept": "*/*",
    "Host": "httpbin.org",
    "User-Agent": "curl/..."
  },
  "origin": "..."
}
Enter fullscreen mode Exit fullscreen mode

Dùng response này để xác nhận client đã gửi đúng query params và headers.

2. Kiểm tra JSON body khi POST

curl -X POST "https://httpbin.org/post" \
  -H "Content-Type: application/json" \
  -d '{"name": "widget", "qty": 3}'
Enter fullscreen mode Exit fullscreen mode

httpbin sẽ trả về các trường như:

{
  "data": "{\"name\": \"widget\", \"qty\": 3}",
  "json": {
    "name": "widget",
    "qty": 3
  },
  "headers": {
    "Content-Type": "application/json"
  }
}
Enter fullscreen mode Exit fullscreen mode

Kiểm tra:

  • json có được parse đúng không
  • data có giữ nguyên raw payload không
  • Content-Type có đúng không

3. Ép client xử lý lỗi HTTP

Để kiểm tra nhánh xử lý lỗi 503:

curl -i "https://httpbin.org/status/503"
Enter fullscreen mode Exit fullscreen mode

Bạn sẽ nhận response thật với status:

HTTP/2 503
Enter fullscreen mode Exit fullscreen mode

Dùng endpoint này để test:

  • retry logic
  • exponential backoff
  • fallback response
  • error mapping
  • logging khi API lỗi

Ví dụ với pseudo-code:

async function fetchWithRetry(url, retries = 3) {
  for (let attempt = 1; attempt <= retries; attempt++) {
    const res = await fetch(url)

    if (res.ok) return res

    if (attempt === retries) {
      throw new Error(`Request failed with status ${res.status}`)
    }
  }
}

await fetchWithRetry("https://httpbin.org/status/503")
Enter fullscreen mode Exit fullscreen mode

4. Kiểm tra timeout

Dùng /delay/{n} để mô phỏng API chậm:

curl -i "https://httpbin.org/delay/5"
Enter fullscreen mode Exit fullscreen mode

Nếu client của bạn đặt timeout 2 giây, request này phải fail theo cách có kiểm soát.

Ví dụ với AbortController trong JavaScript:

const controller = new AbortController()

const timeout = setTimeout(() => {
  controller.abort()
}, 2000)

try {
  const res = await fetch("https://httpbin.org/delay/5", {
    signal: controller.signal
  })

  console.log(await res.json())
} catch (err) {
  console.error("Request timeout or aborted:", err.message)
} finally {
  clearTimeout(timeout)
}
Enter fullscreen mode Exit fullscreen mode

5. Kiểm tra Authorization header

Bearer token:

curl "https://httpbin.org/bearer" \
  -H "Authorization: Bearer test-token"
Enter fullscreen mode Exit fullscreen mode

Basic Auth:

curl -u "user:passwd" \
  "https://httpbin.org/basic-auth/user/passwd"
Enter fullscreen mode Exit fullscreen mode

Các endpoint này hữu ích khi bạn muốn xác nhận interceptor hoặc middleware auth trong client có gắn token đúng cách.

Dùng httpbin trong Apidog

Bạn không bắt buộc phải dùng terminal. Bất kỳ REST client nào cũng có thể gọi các URL của httpbin.

Trong Apidog, bạn có thể:

  1. Tạo request mới.
  2. Nhập URL, ví dụ:
   https://httpbin.org/get
Enter fullscreen mode Exit fullscreen mode
  1. Thêm query params hoặc headers.
  2. Gửi request.
  3. Kiểm tra JSON response với syntax highlighting.
  4. Lưu request để chạy lại hoặc chia sẻ với team.

Workflow này tiện hơn khi bạn muốn:

  • so sánh response giữa nhiều môi trường
  • lưu lịch sử test
  • dùng biến môi trường
  • chia sẻ request với đồng đội
  • chuyển từ kiểm tra thủ công sang test có assertion

Nếu bạn thích terminal-first workflow, xem thêm các ứng dụng khách TUI REST API.

Tự host httpbin với Docker

Dùng bản public của http://httpbin.org là đủ cho kiểm tra nhanh. Nhưng với CI, test tự động hoặc môi trường nội bộ, bạn nên tự host để tránh phụ thuộc vào dịch vụ ngoài.

Image Docker chính thức có trên Docker Hub dưới dạng kennethreitz/httpbin.

Chạy:

docker pull kennethreitz/httpbin
docker run -p 80:80 kennethreitz/httpbin
Enter fullscreen mode Exit fullscreen mode

Sau đó gọi:

curl http://localhost/get
Enter fullscreen mode Exit fullscreen mode

Nếu cổng 80 đã bị chiếm, map sang cổng khác:

docker run -p 8080:80 kennethreitz/httpbin
Enter fullscreen mode Exit fullscreen mode

Gọi lại:

curl http://localhost:8080/get
Enter fullscreen mode Exit fullscreen mode

Thiết lập này phù hợp cho CI vì:

  • không phụ thuộc vào httpbin.org
  • không bị rate limit dùng chung
  • giảm độ trễ mạng
  • giữ request test trong môi trường riêng

Ví dụ trong script CI:

docker run -d --name httpbin -p 8080:80 kennethreitz/httpbin

curl --fail http://localhost:8080/status/200
curl --fail http://localhost:8080/get?ci=true
Enter fullscreen mode Exit fullscreen mode

Khi nào nên dùng httpbin?

Dùng httpbin khi bạn cần kiểm tra nhanh:

  • HTTP method
  • headers
  • query params
  • JSON body
  • form data
  • cookies
  • auth headers
  • redirects
  • timeout
  • error handling

Không nên dùng httpbin nếu bạn cần:

  • mock dữ liệu nghiệp vụ thực tế
  • flow API nhiều bước
  • stateful backend
  • kiểm thử contract
  • test case có assertion phức tạp
  • webhook forwarding về localhost

Với các trường hợp đó, bạn cần mock server, API testing platform hoặc webhook testing tool.

Các lựa chọn thay thế httpbin

Postman Echo

Postman Echo là dịch vụ echo tương tự httpbin. Ví dụ:

https://postman-echo.com/get
Enter fullscreen mode Exit fullscreen mode

Nó hỗ trợ GET, POST, auth và các endpoint tiện ích. Xem tài liệu Postman Echo để biết danh sách đầy đủ.

Nếu http://httpbin.org không khả dụng, Postman Echo là lựa chọn thay thế nhanh.

httpbin tự host

Nếu bạn vẫn muốn behavior giống httpbin nhưng ổn định hơn, tự host bằng Docker là lựa chọn tốt nhất. Cách này phù hợp khi bạn cần endpoint echo trong mạng riêng hoặc pipeline CI.

Dịch vụ mock

httpbin chỉ phản hồi lại request. Nó không tạo dữ liệu nghiệp vụ như danh sách user, đơn hàng, phân trang hoặc response theo schema.

Khi cần mock response có cấu trúc, hãy dùng mock server. Apidog có smart mocking để tạo response từ schema, giúp frontend có thể phát triển trước khi backend hoàn tất.

Apidog như lớp client và testing

httpbin là service nhận request. Apidog là công cụ để gửi request, lưu request, thêm assertion và chạy test.

Bạn có thể dùng Apidog để:

  • gọi httpbin
  • thiết kế endpoint
  • gửi request
  • lưu test case
  • viết assertion
  • nối nhiều request thành scenario
  • chạy test trong CI
  • mock API khi không cần echo service

Khi bạn muốn chuyển từ các lệnh curl rời rạc sang bộ kiểm thử có thể lặp lại, Apidog giúp lưu request hiện có và thêm assertion. Xem thêm các công cụ kiểm thử API trực tuyến miễn phí.

Câu hỏi thường gặp

httpbin có miễn phí không?

Có. Phiên bản public tại http://httpbin.org miễn phí và không yêu cầu tài khoản. Mã nguồn mở theo giấy phép ISC, nên bạn cũng có thể tự host miễn phí.

httpbin có còn được bảo trì không?

Mã nguồn nằm trong repo GitHub postmanlabs/httpbin. Việc bảo trì đã thay đổi theo thời gian và không phải lúc nào cũng đều đặn. Vì http://httpbin.org có thể không ổn định, nhiều team dùng bản Docker tự host cho các test quan trọng.

Có thể dùng httpbin để kiểm thử webhook không?

Không hẳn. httpbin echo request bạn gửi đến nó, nhưng nó không nhận event từ bên thứ ba rồi forward về máy local của bạn.

Để test webhook hoặc API localhost, xem hướng dẫn kiểm thử API localhost và webhook và bài giới thiệu về cách webhook hoạt động.

httpbin khác Postman Echo ở điểm nào?

Cả hai đều echo request HTTP dưới dạng JSON. httpbin là service Python/Flask mã nguồn mở ban đầu. Postman Echo là service được host bởi Postman. Với kiểm tra nhanh, hãy dùng service nào đang hoạt động ổn định và truy cập được từ môi trường của bạn.

Có thể test error handling bằng httpbin không?

Có. Dùng:

/status/{code}
Enter fullscreen mode Exit fullscreen mode

Ví dụ:

curl -i https://httpbin.org/status/500
curl -i https://httpbin.org/status/429
Enter fullscreen mode Exit fullscreen mode

Dùng:

/delay/{n}
Enter fullscreen mode Exit fullscreen mode

để mô phỏng response chậm:

curl -i https://httpbin.org/delay/5
Enter fullscreen mode Exit fullscreen mode

Đây là cách đơn giản để kiểm tra retry, timeout và xử lý lỗi của HTTP client.

Tóm lại

httpbin là công cụ nhỏ nhưng rất hữu ích khi bạn cần nhìn thấy chính xác request mà HTTP client đã gửi. Dùng /get/post để kiểm tra params/body, /headers để debug headers, /status/{code} để ép lỗi, và /delay/{n} để test timeout. Với CI hoặc test lặp lại, hãy chạy httpbin bằng Docker thay vì phụ thuộc vào service public.

Khi cần nhiều hơn một echo endpoint, hãy dùng nền tảng đầy đủ hơn. Apidog cho phép bạn gọi httpbin, lưu request, thêm assertion, mock API và chạy test tự động. Tải xuống Apidog để biến các kiểm tra httpbin nhanh thành bộ test có thể lặp lại.

Top comments (0)