API RESTful có thể trả về các tệp hoặc chỉ một vị trí


11

Điều này đã làm tôi bối rối trong một thời gian.

Ví dụ: chúng tôi có API REST cung cấp nội dung cơ bản cho hệ thống, tiêu thụ và sản xuất JSON. Tại điểm cuối này, nó tạo ra một URL cho một hình ảnh và một mô tả, và được tìm thấy như vậy: // localhost / myApi / Pictures / 1

{
    id: 1,
    description: "This is a pretty picture of a daisy",
    URL: <OUR URL>
}

Bây giờ, OUR_URL nên trỏ đến một vị trí trên API, ví dụ // localhost / myApi / files / Pictures / 1 trả về JPG (ứng dụng đằng sau API đọc nội dung vật lý của tệp và sau đó truyền lại cho khách hàng ). Điều này rõ ràng khác với phần còn lại của API đang tạo ra các phản hồi JSON và sẽ có chi phí từ việc đọc và phát trực tuyến tệp thực tế.

Ngoài ra, OUR_URL phải trỏ đến một URL bên ngoài phạm vi của dịch vụ REST, vì vậy //localhost/files/pictures/1.jpg nơi nó đọc tệp trực tiếp.

Vì vậy, câu hỏi là:

API RESTful có thể trả về các tệp hoặc chỉ một vị trí không?


1
Bạn có nhận ra rằng mô tả chung về REST là số tiền nào cho "khách hàng thực hiện yêu cầu tới URL và máy chủ trả lại nội dung", đúng không? Toàn bộ ý tưởng là REST được định nghĩa rất lỏng lẻo và có thể thích nghi với hầu hết mọi lược đồ truy xuất dựa trên URL.

Câu trả lời:


16

Một dịch vụ RESTful sẽ cung cấp tài nguyên cho người dùng API. Tài nguyên có thể có nhiều định dạng khác nhau, từ JSON hoặc XML đến JPEG và HTML.

Thậm chí không có yêu cầu, hoặc thậm chí là kỳ vọng, rằng một API duy nhất chỉ phục vụ các tài nguyên ở một định dạng duy nhất. Không có gì sai khi cung cấp tài liệu JSON trên URI /myApi/pictures/1và tệp JPEG tạo thành URI /myApi/files/pictures/1.
Trong trường hợp cực đoan hơn, thậm chí có thể cung cấp cả mô tả JSON và tệp JPEG từ cùng một URL, tùy thuộc vào định dạng mà người yêu cầu yêu cầu.


7

Một vấn đề bạn sẽ gặp phải khi trả lại URI là máy chủ tệp cũ đơn giản không thể bảo mật. Vì vậy, nếu bạn cần thực hiện bất kỳ giới hạn nào về người có thể truy cập tệp, thì bạn sẽ cần có thể trả lại trực tiếp trong API REST (hoặc không, nếu người dùng không có quyền, thì tệp đó là không ở trạng thái chính xác, v.v.)

Mặt khác, trả lại URI cũ đơn giản và cho phép chuyển sang CDN chuyên dụng có rất nhiều lợi ích xung quanh việc cung cấp, đơn giản và khả năng mở rộng - giả sử đó là tất cả những gì bạn cần làm.


Khía cạnh auth là một điểm rất tốt, điều mà tôi chưa bao giờ xem xét.
Crazy Dino
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.