Kısmi Güncellemeler İçin Kaynaklar Nasıl İyileştirilir?
# Request
GET /customers/1 HTTP/1.1 Host: www.example.org
# Response
HTTP/1.1 200 OK
Content-Type: application/xml;charset=UTF-8 Last-Modified: Thu, 05 Nov 2009 01:54:19 GMT ETag: "ca87aa4ff1505934281d91f807b25b3c"
<customer xmlns:atom="http://www.w3.org/2005/Atom">
<atom:link rel="self" href="http://www.example.org/customers/1"/> <name>J. P. Goodright</name>
<status>active</status>
<address>
<street>123 Main</street> <city>Byteville</city> <state>MD</state> <postal-code>12345</postal-code>
</address> <billing-contact>
<name>P.J. Billingsley</name>
<email>pjbill@example.org</email> <voice-phone>123-456-7890</voice-phone> <fax-line>234-567-8901</fax-line>
</billing-contact> <services>
<preferred-shipping>two-day</preferred-shipping> <billing-method>net-30</billing-method> <minimum-order>1000</mininum-order> <customer-discount>10%</customer-discount>
</services> </customer>
Müşteri kaynağının fatura iletişim bilgilerini güncellemek istediğinizi varsayalım. Bunu desteklemek için sunucu, orijinal kaynaktan istenen öğeleri içeren yeni bir "faturalandırma ilgili kişisi" kaynağı sunacak şekilde kaynağı hassaslaştırabilir.
# Request
GET /customers/1/billing-contact HTTP/1.1 Host: www.example.org
# Response
HTTP/1.1 200 OK
Content-Type: application/xml;charset=UTF-8 Last-Modified: Thu, 05 Nov 2009 01:54:19 GMT ETag: "d65b17759967753e7eb37b28f1bdb1fa"
<billing-contact xmlns:atom="http://www.w3.org/2005/Atom">
<atom:link ref="self" href="http://www.example.org/customers/1/billing-contact"/> <name>P.J. Billingsley</name>
<email>pjbill@example.org</email>
<voice-phone>123-456-7890</voice-phone>
<fax-line>234-567-8901</fax-line>
</billing-contact>
Daha sonra müşteri kaynağının gösterimini, faturalandırma ilgili kişi kaynağına bir bağlantı içerecek şekilde iyileştirebilirsiniz.
# Request
GET /customers/1 HTTP/1.1 Host: www.example.org
# Response
HTTP/1.1 200 OK
Content-Type: application/xml;charset=UTF-8 Last-Modified: Thu, 05 Nov 2009 01:54:19 GMT ETag: "99d37a01bc588d8743f704eaffdb22b0"
<customer xmlns:atom="http://www.w3.org/2005/Atom">
<atom:link rel="self" href="http://www.example.org/customers/1"/>
<atom:link rel="related" href="http://www.example.org/customers/1/billing-contact"/> <name>J. P. Goodright</name>
<status>active</status>
<address>
<street>123 Main</street> <city>Byteville</city>
<postal-code>12345</postal-code> </address>
<services>
<preferred-shipping>two-day</preferred-shipping> <billing-method>net-30</billing-method> <minimum-order>1000</mininum-order> <customer-discount>10%</customer-discount>
</services> </customer>
Müşteriler artık http://www.example.org/customers/1/billing-contact adresindeki URI kaynağına bir PUT isteği göndererek fatura ilgili kişisini güncelleyebilir.
Bu yaklaşımı müşteri kaynağının diğer bölümlerine genişletebilirsiniz. Örneğin, aşağıdaki PUT isteği müşteri durumunu ve tercih edilen gönderim yöntemini günceller:
# Request
PUT /customer/1234/info HTTP/1.1
Content-Type: application/xml;charset=UTF-8 If-Match: "bfcc688bd542e17f27da0f82200c35ea" If-Unmodified-Since: Thu, 05 Nov 2009 01:54:19 GMT
<customer-info>
<status>premium</status> <preferred-shipping>next-day</preferred-shipping>
</customer-info>
Alternatif olarak, bir müşterinin mevcut e-posta adresini kaldırıp iki yeni e-posta adresi eklemek istediği bir durumu düşünün. Bu durumda, tüm e-posta adreslerini başka bir kaynak olarak gösterebilir ve istemcinin bir PUT isteği göndererek bu kaynağı güncellemesine izin verebilirsiniz:
# Request
PUT /customer/1234/emails HTTP/1.1
Content-Type: application/xml;charset=UTF-8 If-Match: "b5b55c8a7f18dd77b4b2d94eed7f1be5" If-Unmodified-Since: Thu, 05 Nov 2009 01:54:19 GMT
<emails>
<email type="work">pjbill1@example.org</status> <email type="alt">jane1@example.org</status>
</emails>
Not: Bu tür kaynaklar tutarsız veya kirletici görünebilir. "Müşteri bilgileri" veya "e-postalar" kaynaklarının, müşteri kaynağının belirli kısmi güncellemelerini desteklemek dışında var olma nedenleri yoktur. Ancak, erişim ve güncellemeler için uygun olan her şeyin kaynak olarak aday olduğunu unutmayın.
Hiç yorum yok:
Yorum Gönder