Tôi đang làm việc để xây dựng một dịch vụ web RESTful. Tôi đã đọc về các nguyên tắc của việc sử dụng HTTP cho mọi cơ chế như xa như nó sẽ đưa bạn, và hầu hết thời gian, như khi tìm nạp tài nguyên, nó hoạt động khá tốt.Khi nào trong API REST của tôi, tôi có nên sử dụng phong bì không? Nếu tôi sử dụng nó ở một nơi, tôi có nên sử dụng nó không?
Nhưng khi tôi cần POST một mục mới, vì lợi ích của sự rõ ràng và mạnh mẽ, bất kể khách hàng có thể làm gì, tôi muốn cung cấp các lỗi xác thực cụ thể mà mục nhập mới có thể bị lỗi. Ngoài ra, có các lỗi cụ thể ở đâu, dữ liệu để tạo người dùng mới hoàn toàn hợp lệ, nhưng có thể sử dụng biệt hiệu hoặc địa chỉ email. Chỉ cần trả lại 409 Conflict
không đủ chi tiết về biệt hiệu hoặc địa chỉ email đã được thực hiện.
Vì vậy, đi lại xung quanh đây không phải là khoa học tên lửa: tài liệu một loạt các mã lỗi cụ thể và trả về một đối tượng với các lỗi:
{ errors: [4, 8, 42] }
Điều này có nghĩa rằng trong trường hợp yêu cầu không thành công, tôi sẽ không quay trở lại tài nguyên hoặc khóa của nó như tôi có thể được kỳ vọng bởi triết lý REST. Tương tự, khi tôi trả về nhiều tài nguyên, tôi phải sắp xếp chúng theo một cách nào đó trong một mảng. Vì vậy, câu hỏi của tôi là: liệu tôi có đang cung cấp dịch vụ web RESTful được xử lý tốt nếu tôi chuẩn hóa một phong bì để sử dụng cho mọi yêu cầu, chẳng hạn như luôn có một đối tượng như { errors, isSuccessful, content }
?
Trước đây tôi đã xây dựng các dịch vụ web theo phong cách RPC đã sử dụng dịch vụ này, nhưng tôi không muốn tạo một thứ gì đó gần như "REST". Nếu có bất kỳ điểm nào để trở thành REST, tôi muốn được cư xử tốt nhất có thể. Nếu câu trả lời là "không có địa ngục", mà tôi nghĩ rằng nó có thể là, tôi muốn nghe nếu ít nhất là giải quyết vấn đề xác nhận một cách chính xác, và những gì một tài liệu tham khảo tốt cho loại giải quyết vấn đề có thể là, bởi vì hầu hết các hướng dẫn tôi đã tìm thấy chỉ có chi tiết các trường hợp đơn giản.
Đủ công bằng. Điều gì khiến tôi tự hỏi liệu tôi có nên sử dụng một phong bì là nhu cầu định kỳ cho các lỗi chi tiết và hành vi của nhiều khung công tác REST khách hàng chỉ chấp nhận một loại câu trả lời. Khi một cái gì đó có thể đi sai, câu trả lời là có hiệu quả (tài nguyên | lỗi | không có gì), chú thích với các cơ chế HTTP như mã trạng thái. Tôi sẽ phải làm cho nó hoạt động; có lẽ sẽ dễ dàng hơn nhiều nếu tôi chuẩn hóa một dạng phản hồi lỗi duy nhất. – Jesper
Xem tại đây cách API Gitlab đang sử dụng tiêu đề Liên kết để phân trang https://developer.github.com/v3/repos/#list-organization-repositories. Chỉ để cho bạn thấy đây là cách thực hành tốt nhất. – danger89