Neden HttpResponseMessage yerine İHttpActionResult kullanmalıyım?
WebApi ile geliÅŸmekte olan ve Microsoft HttpResponseMessage
dönen üzerinde kullanılması tavsiye gibi görünüyor IHttpActionResult
yeni bir Arayüz tanıttı nerede WebApi2 taşındı. Bu yeni Arayüz avantajları hakkında kafam karıştı. Başta sadece bir sağlamak gibi görünüyorBİRAZdaha kolay.
Bu olduğunu öne yapmak istiyorum "soyutlama uğruna soyutlama". Bir şey mi kaçırdım? Gerçek dünya belki bir kod satırı kaydetme ayrıca bu yeni Arayüz kullanarak aldığım avantajları nelerdir?
Eski yol(WebApi):
public HttpResponseMessage Delete(int id)
{
var status = _Repository.DeleteCustomer(id);
if (status)
{
return new HttpResponseMessage(HttpStatusCode.OK);
}
else
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}
}
Yeni Bir Yol(WebApi2):
public IHttpActionResult Delete(int id)
{
var status = _Repository.DeleteCustomer(id);
if (status)
{
//return new HttpResponseMessage(HttpStatusCode.OK);
return Ok();
}
else
{
//throw new HttpResponseException(HttpStatusCode.NotFound);
return NotFound();
}
}
CEVAP
Varolan kodunuzu konserve tepkilerden biri uymuyor HttpResponseMessage
oluşturur, çünkü IHttpActionResult
kullanmamaya karar verebilirsiniz. Ancak IHttpActionResult
HttpResponseMessage
ResponseMessage
konserve yanıt kullanarak uyarlayabilirsiniz. Öyle olmadığını gösteren göndermek istedim o yüzden beni bir süre bu şekil, necesarily veya başka bir seçim var:
public IHttpActionResult SomeAction()
{
IHttpActionResult response;
//we want a 303 with the ability to set location
HttpResponseMessage responseMsg = new HttpResponseMessage(HttpStatusCode.RedirectMethod);
responseMsg.Headers.Location = new Uri("http://customLocation.blah");
response = ResponseMessage(responseMsg);
return response;
}
Not denetleyicisi gereken temel sınıf ApiController
yöntemidir devralır.
favicon.png vs favicon.ıco - PNG neden...
Neden ilişkisel veritabanı yerine belg...
Neden Hamcrest-EÅŸleÅŸtirici ve assertTh...
Neden hiç emplace_back yerine push_bac...
Bir serialVersionUÄ°D nedir ve neden ku...