HttpResponseMessage ve HttpResponseException arasındaki fark nedir
Her ikisi de anlamak ve örnek kod yazmaya çalıştım:
public HttpResponseMessage Get()
{
var response = ControllerContext.Request
.CreateResponse(HttpStatusCode.BadRequest, "abc");
throw new HttpResponseException(response);
}
Ve:
public HttpResponseMessage Get()
{
return ControllerContext.Request
.CreateResponse(HttpStatusCode.BadRequest, "abc");
}
Keman, gerçekten ikisi arasında herhangi bir fark göremedim, yani HttpResponseException
kullanma amacı nedir?
CEVAP
İkisi arasındaki temel fark bu. Özel durum derhal işleme ve çıkış durdurmak için yararlıdır. Aşağıdaki kodu var örneğin varsayalım
public class CustomerController : ApiController {
private ICustomerContext repo;
public CustomerController(ICustomerContext repo) {
this.repo = repo;
}
public Customer Get(int id) {
var customer = repo.Customers.SingleOrDefault(c=>c.CustomerID == id);
if (customer == null) {
throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound));
}
return customer;
}
}
Bu kod çalışır ve mevcut olmayan bir kimliği geçersem, hemen durdurmak ve 404 durum kodu döndürür.
HttpResponseMessage geri dönersem yerine, isteği mutlu bir şekilde bu işleme devam etmek ve bir 404 döndürecektir. Temel fark son olma isteği ya da değil.
Olarak Darrel dışında bilmiyorum kimi durumlarda işleme devam etmek için Müşteri bulunduğunda olarak () istiyorum durumlarda ve yararlı olduğunu söyledi.
HttpResponseMessage gibi bir şey kullanmak isteyebilirsiniz yere 201 durum kodu dönmek konumu ve Başlığı ayarlamak için bir Http POST. Bu durumda işleme devam etmek istiyorum. Bu kod ile yapar*.
public class CustomerController : ApiController {
private ICustomerContext repo;
public CustomerController(ICustomerContext repo) {
this.repo = repo;
}
public HttpResponseMessage Post(Customer customer) {
repo.Add(customer);
repo.SaveChanges();
var response = Request.CreateResponse(HttpStatusCode.Created, customer);
response.Headers.Location = new Uri(Request.RequestUri, string.format("customer/{0}", customer.id));
return response;
}
}
Eğer beta yeni bir HttpResponseMessage oluşturacak bit kullanıyorsanız. *not: Sen CreateResponse uzatma yöntemi İsteğin izin almayı gerektiren ancak daha sonra bit kullanıyorum.
Yukarıda, müşteri 201, geçer durum kodu ayarlar ve sonra konum Başlığı ayarlayan bir yanıt yaratıyorum.
Yanıt sonra döndü ve istek işleme devam eder.
Bu yardımcı olur umarım
Bir URI, URL ve URN arasındaki fark ne...
Aramak ve uygulamak arasındaki fark ne...
@Staticmethod ve @Python classmethod a...
Match_parent ve fill_parent arasındaki...
Varchar ve nvarchar arasındaki fark ne...