Evet, bu mümkün. Varsayılan yapılandırmaya sahip kutunun dışında, searchTerm
sorgu dizesi parametresi olarak geçtiğinizi varsayarak çalışmalısınız. Ancak, URL'nin bir parçası olarak örneğin /api/myurl/blah
gibi aktarmaya çalışıyorsanız, varsayılan kural yolu, yöntemin int
sürümüyle eşleşmesini ve bir hata döndürmesini dener. Varsayılan yapılandırmayı düzenlemeniz veya Attribute Routing kullanmanız gerekir.
Genelde, konvansiyonel MVC yönlendirmesinin WebApi'de daha az kullanışlı olduğunu görüyorum, bu yüzden genellikle onu devre dışı bırakıyorum ve Attribute Routing kullanın.
, nitelik yönlendirmeyi etkinleştirmek için WebAPI config
config.MapHttpAttributeRoutes();
ekleyin.
O zaman
/api/myobject?searchTerm=blah
ve
/api/myobject/1
ve onlar olmamalı aracılığıyla ikinci yoluyla ilk yöntemini çağırabilirsiniz, Şimdi böyle
[HttpGet]
[Route("api/myobject/")]
public HttpResponseMessage GetSearchResults(string searchTerm)
{
HttpResponseMessage response;
//Do Work
return response;
}
[HttpGet]
[Route("api/myobject/{id:int}")]
public HttpResponseMessage Get(int id)
{
HttpResponseMessage response;
//Do Work
return response;
}
olarak yöntemlerinizi işaretleyebilir çarpışmak. Eğer searchTerm
yerine sorgu parametreleri URL'de olmak sahip olmak istiyorsanız
Ancak, tüm kimlikleri yakalayacak
[Route("api/myobject/{searchTerm}")]
api/myobject/{id:int}
rotaya rotayı değiştirebilir ve api/myobject/{searchTerm}
yakalayacak en başka herhangi bir şey. Bununla birlikte, URL’nin URL’de kodlanmamış bir şey olmama ihtimaline karşı dikkatli olun.
Tam olarak hangi URL biçimlendirmesini aradığınızı tam olarak bilmiyorum, bu yüzden sağladığım şey sadece basit örneklerdir. Daha önce gönderdiğim link özniteliği yönlendirme daha derinlere doğru deliyor. WebApi'nin MVC'den miras aldığı sözleşmesiyle yönlendirmekten daha karmaşık yollar yapmanızı sağlar.
Mükemmel açıklama - yönlendirilmiş yönlendirme mükemmel çalıştı! – Aaron
Sorun değil. Yardım ettiğine sevindim. –