Haruskah RESTful API dapat mengembalikan file, atau hanya lokasi


12

Ini membingungkan saya untuk sementara waktu.

Misalnya, kami memiliki REST API yang menyediakan konten dasar untuk suatu sistem, mengkonsumsi dan memproduksi JSON. Pada titik akhir ini menghasilkan URL ke gambar dan deskripsi, dan ditemukan seperti ini: // localhost / myApi / pictures / 1

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

Sekarang OUR_URL seharusnya menunjuk ke lokasi di API misalnya // localhost / myApi / file / pictures / 1 yang mengembalikan JPG (aplikasi di belakang API membaca konten fisik file dan kemudian mengalirkannya kembali ke klien ). Ini jelas berbeda dengan API lainnya yang menghasilkan respons JSON dan akan ada overhead dari pembacaan dan streaming file aktual.

Atau jika OUR_URL menunjuk ke URL di luar ruang lingkup layanan REST, maka //localhost/files/pictures/1.jpg di mana ia membaca file secara langsung.

Jadi pertanyaannya adalah:

Haruskah RESTful API dapat mengembalikan file, atau hanya lokasi?


1
Anda benar-benar menyadari bahwa gambaran umum tentang jumlah REST adalah "klien membuat permintaan ke URL dan server mengembalikan barang", kan? Seluruh gagasannya adalah bahwa REST didefinisikan dengan sangat longgar dan dapat disesuaikan dengan hampir semua skema pengambilan berbasis URL.

Jawaban:


17

Layanan RESTful harus menyediakan sumber daya untuk pengguna API. Sumber daya dapat memiliki berbagai format, yang berkisar dari JSON atau XML ke JPEG dan HTML.

Bahkan tidak ada persyaratan, atau bahkan harapan, bahwa satu API hanya melayani sumber daya dari format tunggal. Tidak ada yang salah dengan melayani dokumen JSON di URI /myApi/pictures/1dan file JPEG dari URI /myApi/files/pictures/1.
Dalam kasus yang lebih ekstrem, bahkan dimungkinkan untuk menyajikan deskripsi JSON dan file JPEG dari URL yang sama, tergantung pada format yang diminta pemohon.


7

Satu masalah yang Anda miliki hanya dengan mengembalikan URI adalah server file lama yang biasa tidak dapat melakukan keamanan. Jadi jika Anda perlu melakukan segala batasan pada siapa yang dapat mengakses file, maka Anda harus dapat mengembalikannya di REST API secara langsung (atau tidak, jika pengguna tidak memiliki hak, file tersebut adalah tidak dalam kondisi yang benar, dll.).

Jika tidak, mengembalikan URI lama yang sederhana dan membiarkannya pergi ke CDN khusus memiliki banyak manfaat di sekitar penyediaan, kesederhanaan, dan skalabilitas - dengan asumsi hanya itu yang perlu Anda lakukan.


Aspek auth adalah poin yang sangat bagus, sesuatu yang tidak pernah saya pertimbangkan.
Crazy Dino
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.