2014-04-20 14 views

Odpowiedz

21

Ten kod powrotu result nie będzie kompilować, jak result nie implementuje IHttpActionResult ...

public <IHttpActionResult> GetItem(Guid id) 
{ 
    // ... code ..., Item result = .... 
    return result; 
} 

Wracając Json() zawsze zwraca HTTP 200 i wynik w formacie JSON, bez względu na to w jakim formacie jest w nagłówku Accept żądania przychodzące.

public <IHttpActionResult> GetItem(Guid id) 
{ 
    // ... code ..., Item result = .... 
    return Json(result); 
} 

Wracając Ok() Przywraca HTTP 200, ale wynik zostanie sformatowana na podstawie tego, co zostało określone w tej prośby cel.

public <IHttpActionResult> GetItem(Guid id) 
{ 
    // ... code ..., Item result = .... 
    return Ok(result); 
} 
1

tylko dodatkiem do poprzednich wyjaśnień:

Rodzaje zamian za fuctions są: IHttpActionResult

Dlatego oczekiwanie jest metoda, aby powrócić do IHttpActionResult która stanowi interfejs dla HttpResponseMessage. HttpResponseMessage ma przydatne właściwości, takie jak nagłówki, treść i kod statusu.

Dlatego Ok(result) zwraca kod z kodem stanu i treścią, która w tym przypadku jest wynikiem. Tymczasem, Json(result) konwertuje obiekt do formatu json, czyli serializacji, i który zostaje umieszczony jako zawartość w HttpResponseMessage.

Najlepszą rzeczą w web api z ASP.NET jest to, że tworzy proste sposoby przekazywania odpowiedzi Http przez abstrakcję. Najgorsze jest to, że wymaga trochę zrozumienia przed użyciem stosunkowo prostych metod.

Here jest więcej informacji na temat serilization i JSON

Here jest więcej o informacje o IHttpActionResult

Powiązane problemy