FresherKỹ thuậtThiết kế API
Khi nào dùng path parameter, query parameter và request body?
Thử trả lời trước
Đáp án mẫu
Mỗi loại có một vai trò riêng. Path xác định resource, query string định hình việc đọc, còn body chứa dữ liệu để tạo hoặc thay đổi resource.
GET /orders/42 # path: which order
GET /orders?status=paid&limit=20 # query: filter and page a list
POST /orders # body: the new order
PATCH /orders/42 # path: which one, body: what to change
- Path parameter là bắt buộc và gọi tên resource:
/orders/42. - Query parameter là tùy chọn và làm mịn một collection: lọc, sắp xếp, phân trang, chọn field.
- Body (thường là JSON) chứa dữ liệu có cấu trúc cho
POST,PUTvàPATCH.GETkhông có ý nghĩa body được định nghĩa, nên đừng dựa vào nó.
URL còn nằm trong lịch sử trình duyệt, log của server và proxy, nên không bao giờ đặt mật khẩu, token hay dữ liệu cá nhân vào path hoặc query. Gửi secret trong header như Authorization hoặc trong body.
Dùng header cho metadata của request như content type, ngôn ngữ và auth.
Ý chính
- Path xác định resource
- Query string dùng để lọc, sắp xếp và phân trang collection
- Body chứa dữ liệu cho POST, PUT và PATCH
- Không đặt secret trong URL vì chúng bị ghi log
Câu hỏi nối tiếp thường gặp
- Request GET có thể có body không?
- Bạn đặt version của API ở đâu?
Lỗi thường gặp
- Truyền token hoặc mật khẩu qua query string
- Dùng query parameter để xác định resource chính