RESTful API dosyaları veya yalnızca bir konum döndürebiliyorsa


12

Bu bir süredir beni şaşırttı.

Örneğin, JSON tüketen ve üreten bir sisteme temel içerik sağlayan bir REST API'miz var. Bu uç noktada bir resme ve açıklamaya bir URL üretir ve şöyle bulunur: // localhost / myApi / pictures / 1

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

Şimdi OUR_URL, API'da örneğin // localhost / myApi / files / pictures / 1 olan bir JPG döndüren bir konuma işaret etmelidir (API'nın arkasındaki uygulama dosyanın fiziksel içeriğini okur ve ardından istemciye geri gönderir) ). Bu, JSON yanıtları üreten API'nin geri kalanından açıkça farklıdır ve gerçek dosyanın okunması ve akışından ek yük olacaktır.

Alternatif olarak OUR_URL, REST hizmetinin kapsamı dışında bir URL'yi göstermelidir, bu nedenle //localhost/files/pictures/1.jpg dosyasını doğrudan okur.

Soru şu:

RESTful API dosyaları veya sadece bir konum döndürmek mümkün mü?


1
REST'in genel açıklamasının "istemciler bir URL'ye istekte bulunduğunu ve sunucunun bir şeyler döndürdüğü" anlamına geldiğini anlıyorsunuz, değil mi? Tüm fikir, REST'in çok gevşek bir şekilde tanımlanmış olması ve hemen hemen her URL tabanlı alma planına uyarlanabilmesidir.

Yanıtlar:


17

RESTful hizmeti , API kullanıcılarına kaynak sağlamalıdır . Kaynaklar, JSON veya XML'den JPEG ve HTML'ye kadar çeşitli biçimlere sahip olabilir.

Tek bir API'nin yalnızca tek bir biçime sahip kaynaklara gereksinimi, hatta beklentisi bile yoktur. URI'de bir JSON belgesi ve URI'den /myApi/pictures/1bir JPEG dosyası sunmakla ilgili yanlış bir şey yoktur /myApi/files/pictures/1.
Daha uç bir durumda, istekte bulunanın istediği formata bağlı olarak, aynı URL'den hem JSON açıklamasını hem de JPEG dosyasını sunmak mümkündür.


7

Sadece geri dönen URI'larda karşılaşacağınız bir sorun, düz eski bir dosya sunucusunun güvenlik yapamamasıdır. Bu nedenle, bir dosyaya kimlerin erişebileceği konusunda herhangi bir sınırlama yapmanız gerekiyorsa, dosyayı doğrudan REST API'sına iade edebilmeniz gerekir (veya kullanıcının hakları yoksa, dosya doğru durumda değil vs.).

Aksi takdirde, düz eski URI'yi döndürmek ve bunun özel bir CDN'ye gitmesine izin vermek, yapmanız gereken tek şey olduğunu varsayarak sağlama, basitlik ve ölçeklenebilirlik konusunda birçok faydaya sahiptir.


Kimlik doğrulaması çok iyi bir nokta, hiç düşünmediğim bir şey.
Çılgın Dino
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.