Move etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Move etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

13 Mart 2022 Pazar

WebDAV Method Kullanımı

                                                                                     


    WebDAV (RFC 4918) kaynakların dağıtılmış olarak yazılması ve versiyonlaması için HTTP'nin bir uzantısıdır. Bu uzantı HTTP yi genişletir ve dosya , belgeleri yönetmek için bir dizi HTTP yönetimi ve başlığını belirtir. Bu protokol aşağıdaki uzantın yöntemlerini içerir. 

PROPFIND : 
WebDAV belgelerin özellikleri olabilir ve istemciler bu özellikleri anlamak için bu yöntemi kullanır.
PROPATCH:
İstemciler, kaynakların özelliklerini ayarlamak, eklemek, kaldırmak için bu yöntemi kullanır.

MKCOL
WeDAV belgeleri koleksiyonlar halinde gruplandırmanıza olanak tanır, müşteri bu yöntem ile yeni bir koleksiyon oluşturmak için kullanabilir.

KOPYALA
İstemciler, bir hedef URL belirliği bir kaynağın bir kopyasını oluşturmak için bu yöntemi kullanabilir.

MOVE:
Bu kopyaya benzer ancak sunucunun bu işlemin bir parçası olarak kaynak, kaynağın silinmesi beklenir.

LOCK:
Bu yöntem istemcilerin belirli belgeyi kilitlemesini sağlar. Bu yöntem kötümser eşzamanlılık kontrolünü sağlar.

UNLOCK:
İstemciler önceden kilitlenmiş bir kaynağın kilidini açmak için bu yöntemi kullanabilir.

WebDAV yönteminin "dosya merkezli" işlemler olduğuna dikkat etmek gereklidir.  Kaynakların kolayca kopyalanabilen, üzerine yazılabilen, yeniden adlandırılabilen v.b dosya nesneleri olduğunu varsayarlar.  Ancak çoğu RESTfull web hizmetlerinde kaynaklar dosya değildir ve böyle bir dosya merkezli görünüm genellikle uygulama kaynaklarıyla kolayca eşleşemez.

WebDAV  genellikle belirli bir uygulama etki alanlarının ihtiyaçlarını karşılamak için HTTP nin nasıl genişletileceğinin bir örneği olarak gösterilir. WebDAV uzantıları istemcilerin uzak sunuculardaki belgeleri veya dosyaları düzenlemesine, yönetmesine izin verecek şekilde tasarlanmıştır. Bir kaynağı kopyalamak için örnek;

# Request to copy a resource
COPY /report/working/2010.pdf HTTP/1.1
Host: www.example.org
Destination: http://www.example.org/projections/2010.pdf

# Response
HTTP/1.1 201 Created

İstekte, istemci bir hedef başlığı aracılığıyla kopyanın hedefini seçer. İstemci bu yöntemi özellikler veya koleksiyonlar gibi diğer WebDAV kaynaklarına uygulayabilir. İstemci ayrıca sunucunun bir overwrite üstbilgisi sağlayarak hedef URL de var olan herhangi bir kaynağı geçersiz kılması gerekip gerekmediğini veya bir koleksiyonu kopyalarken derinliği belirtmek için bir Derinlik üstbilgisi belirtebilir.

# Request to copy a resource
COPY /report/working/2010.pdf HTTP/1.1
Host: www.example.org
Destination: http://www.example.org/projections/2010.pdf

Overwrite: F

# Response
HTTP/1.1 201 Created

Benzer şekilde bir kaynağı bir konumdan başka bir konuma taşımak için MOVE yöntemini kullanabilirsiniz.

# Request
MOVE /report/working/2010.pdf HTTP/1.1
Host: www.example.org
Destination: http://www.example.org/projections/2010.pdf

# Response
HTTP/1.1 201 Created
Location: http://www.example.org/archives/this-resource

Hem COPY hemde MOVE yöntemleri atomiktir ve sunucular arasındaki kaynaklara bile uygulanabilir. Örneğin; fiili taşıma işlemi kaynak sunuculardan bir veya daha fazla kaynağın hedef sunucuya yerleştirilemesi ve ardından kaynak sunuculardaki kaynakların kaldırılması gerektirebilir. Sunucu kaynağı yalnızca hedef sunucuda başarılı çoğalttığında kaldırabilir.  Bu yöntemler ayrıca istemcilerin sunucular arasında kaynakları  kilitleme, kilidini açma ve hatta kopyalama gibi ayrıntılarla ilgilenmesini gerektirir.


27 Şubat 2022 Pazar

RestFull WebService - Kaynak Taşıma

 

   Kaynağı taşıyabilen bir denetleyiciye bir bağlantı şablonu eklenmesi gerekir. Taşıma isteği göndermek için POST kullanılır. İsteği işledikten sonra yanıt kodu 201 veya 303 sonuca bağlı olarak döndürülür.

Bir hareketin anlamı tamamen uygulamaya özgüdür. Kaynağın aynı veya farklı bir sunucuda farklı bir konuma gönderiliyor ve orjinal siliniyorsa,  yeniden kopyalamak anlamına gelebilir.  Alternatif olarak, bir kayanğın durumunu değiştirmeden değiştirmek anlamına da gelebilir. Bir hareketin ne anlama geldiği ve sunucunun bunu nasıl uyguladığı hakkında ve  her iki durumunda da sabit olmayan bağlantı sürdürmek için müşteri kendi başına işi yapmak için endişelenmemelidir.

Bir fotoğraf albümünü ele alırsak, Albümün bir arkadaşlar klasörünün parçasıdır. Müşteri yaratılan albümü aile albümü klasörüne taşımak isterse Sunucu URI lerini albüm kategorisinde, bu taşıma işlemi albümün URI  inde bir değişikliğe neden olur.

Bir kaynağı taşımak, kopyalamaktan çok farklı değildir. Bu durumda sunucu istemcinin bir hedef için kriter sağlamasına izin vermek için bir URI veya URI  şablonu sağlayan bir kaynak oluşturur.

# Request
GET /albums/friends/2020/08/1011 HTTP/1.1
Host: www.example.org

# Response
HTTP/1.1 200 OK
Content-Type: application/xml;charset=UTF-8

<album xmlns:atom="http://www.w3.org/2005/Atom">
   <id>urn:example:album:1011</id>
   <atom:link rel="self" href="http://www.example.org/albums/2020/08/1011"/>
   <link-template rel="http://www.example.org/rels/move"
       href="http://www.example.org/albums/friends/2020/08/1011/move;
                t=dc4128786d463dc7e40c18457d1826fa?group={category}"/>
   <category>friends</category> > Kaynağın kategorisini değiştirmek için URI şablonuna sahip bağlantı..
   ...
</album>

Bu gösterimde sunucu, istemcinin bir kategori belirtmesi ve kaynağın taşınması için bir URI şablonu kullanır.

# Request
POST /albums/friends/2020/08/1011/move;t=dc4128786d463dc7e40c18457d1826fa?
   group=family HTTP/1.1 > Kategoriyi değiştirme talebi

Host: www.example.org
Content-Length: 0

# Response
HTTP/1.1 201 Created
Content-Type: application/xml;charset=UTF-8
Location: http://www.example.org/family/2020/08/1021 > Yeni Kaynak.
Content-Location: http://www.example.org/family/2020/08/1021

<album>
   <id>urn:example:album:1021</id>
   <atom:link rel="self" href="http://www.example.org/family/albums/2020/08/1021"/>
   <category>family</category>
...

Bu isteğin sonucu URI http://www.example.org/albums/ adresinde yeni bir kaynaktır. aile /2020/08/1021

Sunucu, müşteri orjinal albüme erişmeye çalıştığı durumlarda bir 410 veya 4040  döndürebilir.