Vì vậy, không có gì mới ở đây tôi chỉ đang cố gắng để làm rõ và dường như không thể tìm thấy bất kỳ trong các bài viết khác.
Tôi đang tạo ra một nguồn tài nguyên mới một cách đầy đủ, nói:
/books (POST)
với một cơ thể:
{
title: 'The Lion, the Witch and the Wardrobe',
author: 'C. S. Lewis'
}
Tôi biết rằng tôi nên trả lại một 201 (Đã tạo) với tiêu đề Vị trí của tài nguyên mới:
Location: /books/12345
Câu hỏi tôi dường như không thể tự trả lời là máy chủ nên trả về cái gì trong cơ thể.
Tôi thường thực hiện loại phản ứng này:
{
id: 12345,
title: 'The Lion, the Witch and the Wardrobe',
author: 'C. S. Lewis'
}
Tôi đã làm điều này vì một vài lý do:
- Tôi đã viết api cho các khung giao diện người dùng như angularjs. Trong trường hợp cụ thể của tôi, tôi đang sử dụng tài nguyên góc và tôi thường chỉ cần id cho tài nguyên để xác định vị trí của nó. Nếu tôi không trả lại id trong phần phản hồi, tôi sẽ cần phân tích nó ra khỏi tiêu đề Vị trí.
- Trong một GET của tất cả các cuốn sách, tôi thường trả lại toàn bộ đối tượng không chỉ là id. Theo nghĩa này, mã máy khách của tôi không phải phân biệt nơi lấy id từ (tiêu đề vị trí hoặc phần thân).
Bây giờ tôi biết tôi thực sự ở trong khu vực màu xám ở đây, nhưng hầu hết mọi người đang nói rằng trả lại toàn bộ tài nguyên là thực tế 'xấu'. Nhưng nếu máy chủ thay đổi / thêm thông tin vào tài nguyên. Nó chắc chắn thêm id, nhưng cũng có thể thêm những thứ khác như dấu thời gian. Trong trường hợp tôi không trả lại toàn bộ tài nguyên, có thực sự tốt hơn khi thực hiện POST, trả lại id, sau đó để máy khách thực hiện GET để lấy tài nguyên mới.