2011-11-07 22 views
9

Şu anda sadece çok yeni olan ServiceStack üzerinde çalışıyorum. (Oldukça ilginç; WCF ve REST WCF'den (GET, POST, PUT, DELETE) daha iyi olduklarını söylüyorlar)JSON/XML dizesini REST ServiceStack'a POST isteği olarak gönderebilir miyim?

Ayrıca, daha az kodla ve hızlı bir şekilde çalıştırarak da yardımcı oldu.

Şu anda veri göndermek istediğim zaman. Sınıftan nesne alıp POST isteğinde gönderim. anlayabilirsiniz Yukarıdaki kod ile

JsonServiceClient client = new JsonServiceClient(myURL); 
MYclass cls= MakeObjectForServiceStackToInsertData(); 
var res = client.Post<MYClass>("/postrequest", cls); 

, ben yapıyorum şey budur. Sanırım yanlış değilim. Kafanız karıştıysa lütfen bana bildirin.

İstemci uygulamasında (el ile) sınıf (KEY->Value) sınıfım için JSON'da bir dize yapabilir ve Hizmet Yığını sunucusuna Veri Gönder olarak kullanarak POST yapabilirim.

yani

string str = myJsonString(); 
var res = client.Post<.....> 

ben JSON dizesi yapıp ServiceStack POST olay bu serisini ve DB veri ekleyebilirsiniz Yani, yerine bütün nesneyi gönderme nedeniyle, daha iyi?

Herhangi bir fikrin var mı?

cevap

8

bakmak json isteği göndermek için örnek istiyorsanız, json post isteği yapmak, ama Sadece küçük bir JSON yükünü ilettiğinizden emin olmak için Json/Jsv ServiceClients'ı güvenle kullanabilirsiniz, çünkü null değerlerini içermezler, böylece yalnızca doldurduğunuz alanları geçirirler.

Doğrudan Json serializer kullanarak neyin seri hale getirildiğini doğrulayabilirsiniz. Sadece/ayıklama hizmetinizi test etmek isterseniz

Console.WriteLine(JsonSerializer.SerializeToString(cls)); 

, en iyi yolu sadece sorgu dizesi ile alanları, yani doldurma biri tarafından tarayıcıyı kullanmaktır: Çoğu durumda

http://localhost/myservice/postrequest?Field1=value1&Field2=value2 

nereye ham bir JSON dizgisinde geçmek istediğinizde, başka bir HTTP istemcisi kullanmanız gerekecektir. Bu durumda, tüm HTTP istemcileri tarafından doğal olarak desteklendiği için web servislerini POST'ing form verisini çağırmaktan daha iyidir. JSON serializer yapmak. Örneğin. Burada Kıvrık HTTP POST aracılığıyla, aynı hizmeti çağırmak için: Eğer aynı hizmeti çağırmak tam listesi için Service Stack's Hello World example görebilirsiniz birçok yolu vardır

curl -d "Field1=value1&Field2=value2" http://localhost/myservice/postrequest 

. Burada HTML kullanarak çağrı gibi olacaktır: Eğer bir web tarayıcısından bunu yayınladıklarını yana

<form action="http://localhost/myservice/postrequest" method="POST"> 
    <input type="text" name="Field1" value="value1" /> 
    <input type="text" name="Field2" value="value2" /> 
</form> 

Servis Stack dönecektir HTML ancak JSON görmek istiyorsanız sadece format = json eklemek gerekir neden? URL'ye.

$.ajax({ 
    type: 'POST', 
    url: "http://localhost/myservice/postrequest", 
    data: {Field1: "value1", Field2: "value2"}, 
    success: function(r) { alert(r.Result) }, 
    dataType: "application/json" 
}); 

bir kullanımı hakkında güzel bir şey:

Veya sadece web servisine POST JavaScript ve jQuery kullanabilirsiniz, örnek aşağıda olsun en otomatikman bir JS nesnesine dönüştürülür JSON olarak sonuçlar döndürür Web tarayıcınızın servislerinizi ayıklaması, web servisinizin tam talebini/yanıtını görüntülemek için yerleşik ağ denetçisini (örneğin, Chrome'daki web denetçisi) kullanabilmenizdir.

Eğer aşina değilseniz, HTTP trafiğini kolayca analiz etmenizi sağlayan Fiddler'u da bilmenizi öneririz.

+0

Cevabınızı takdir ediyorum, benim durumumda, COnsole uygulamasından JSON formatında mümkün olduğunu merak ediyorum. Daha fazla ayrıntı için lütfen yeni soruma daha fazla bakın http://stackoverflow.com/questions/8046538/json-format-data-from-console-application-to-service-stack –