2012-01-18 10 views
5

Bir RESTful web hizmeti oluşturuyorum ve bazı kaynaklar bilgi işlem veya işleme işlevleridir. Örneğin, bir kullanıcının bir görüntüyü göndererek ve ölçeklendirilmiş veya dönüştürülmüş görüntüyü geri alarak API aracılığıyla görüntüleri ölçeklendirmesi ve dönüştürmesi mümkündür.RESTful işleme işlevi/kaynağı: GET veya POST?

Treat the processing function as a resource, and use HTTP GET to fetch a 
representation containing the output of the processing function. Use query 
parameters to supply inputs to the processing function. 

Bu girişler, böyle bir noktanın boylam/enlem koordinatları gibi (basit durumlar için açık:

RESTful Web Hizmetleri Cookbook'u, bölüm 2.5'e göre, ben GET kullanmalıdır). Ancak, görüntüler gibi daha büyük girdiler için aynı tavsiyeyi takip etmeli miyim? Bildiğim kadarıyla, bu fazla veriyi bir sorgu parametresi olarak göndermek mümkün değildir. Buna karşı HTTP ben tavsiyesi üzerine protokol sınırlamaları nedeniyle

cevap

6

Kullanım POST olduğunu söylüyor. Aslında sunucuda bir Görüntü Yükleme ve işleme yapıyorsunuz. Görüntü sunucuda zaten kayıtlı değilse, bunu yapmak için başka bir yol düşünemiyorum.

+0

Buradaki önemli bir fikir şu: "görüntü sunucuda zaten kayıtlı." PUT veya POST ile orada olsun [farklı bir soru] (http://stackoverflow.com/questions/630453/put-vs-post-in-rest). – kdbanman

0

. Bu, bu kuralda yapılması gereken bir istisna için çok geçerli ve uygulanabilir bir örnektir.

+0

mevcut haliyle, bu yanıt kabul olmamalı. Oku, diğer googler. – kdbanman

1

görüntü bir kaynaktır. Kaynağı sunucuya koymak için PUT kullanın, ardından istediğiniz boyutu gösteren parametreleri sağlayarak kaynağı GET kullanın.

+0

Vay, bu oldukça kışkırtıcıdır! – sivabudh

+1

Yalnızca istemci, görüntü kimliklerini isteğin bir parçası olarak gönderirse, PUT işlevini kullanın. Sunucu resim kimlikleri oluşturuyorsa ve başarıya ulaştığında 'POST' kullanın. Google "DİNLENME Idempotency" ya bakınız [bu soru] (http://stackoverflow.com/questions/630453/put-vs-post-in-rest) depoya endişe ne olur – kdbanman

+0

? sonra verileri kaydedemeyiz ve sonra PUT mantıklı değil – cammil