2016-04-03 23 views
0

My asp.net web API bir bağımsız bir uygulama, yüz sorun json bir parameter.My API yöntemi yukarıda parametresinde körükkadar json parametre geçişli

[Route("api/UniqueUser/{userInfo}")] 
     public HttpResponseMessage GetUniqueUserByEmail(string userInfo) 
{ 
} 

olan sa geçmektir userinfo kendime feryat hatayı göstermek benim tarayıcı url koymak feryat

{"UserInfo":[{"Id":1,"UserName":"Jxj Bdn","Email":"[email protected]"}]} 

gibi josn olan

enter image description here

cevap

1

JSON verileri, sorgu dizesi/tarayıcı URL'sinde değil, serileştirilmesi için istekte bulunmalıdır.

Ayrıca, 'string userInfo' beklediğiniz gibi çalışmayacaktır. JSON nesnesinin parametrelerini temsil eden bir sınıf tanımlayabilirsiniz ve doğru şekilde çalışacaktır.

public class UserInfo 
{ 
    public int Id { get; set;} 

    public string UserName { get; set;} 

    public string Email { get; set;} 
} 

ve bu satırı değiştirin:

Bu, örneğin çalışacak

public HttpResponseMessage GetUniqueUserByEmail(UserInfo userInfo) 

Düzenleme:

bir başkasının sizi yönlendirmesini kullanmak geçmek için ihtiyaç duyduğu bir url varsa:

https://site/api/UniqueUser/1/Jxj Bdn/[email protected] 

Ve denetleyicisi:

[Route("api/UniqueUser/{id}/{userName}/{email}")] 
public HttpResponseMessage GetUniqueUserByEmail(int id, string userName, string email) 

burada göz çok geleneksel sorgu dizesi parametreleri ile bunun nasıl görmek için:

şiddetle olsa ilk yöntemini kullanarak öneririm

http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api

, bu size güçlü bir nesne verir ve detaylar değişirse başa çıkmak çok daha kolaydır ve modelin onaylanmasında yapının avantajını elde edersiniz.

Müşterilerinizin kullanması için basit bir HTML formu oluşturamaz mısınız?

+0

, bir hizmet uygulaması olduğunu söylediğim için, kullanıcıya bir URL'yi başka bir şey vermem gerekiyor, bu durumda ne yaptığımı. – shamim

+0

Cevabımı güncelleyeceğim –