[英]Web API - custom routing
我在為Web API創建適當的routeTemplate時遇到問題。 請求示例如下所示:
POST /mobile?command=doSomething?parameter1=value¶meter2=value HTTP/1.1
Host: {ENDPOINT}
Accept: application/json
我可能可以使用
routeTemplate: "{controller}"
並以某種方式在控制器中手動處理它,但這看起來不是很好的解決方案。
我試過了
routeTemplate: "{controller}?command={action}"
但是我遇到了ArgumentException,因為routeUrl不能包含問號。
這里正確的routeTemplate是什么?
如果控制器正在處理不同的POST請求,我將嘗試像這樣進行設置:
"{controller}/{action}/{parameter1}/{parameter2}" // will hit url: mobile/MyActionMethod/2/3
上面的路線將使用以下方法命中控制器:
[HttpPost]
public async Task<IHttpActionResult> MyActionMethod(HttpRequestMessage request, int parameter1, int parameter2)
如果您不希望URL中的參數,則可以使用JObject傳遞它們並將其從動態中拉出,或者傳遞模型作為參數。
"{controller}/{action}/"// will hit url: mobile/MyActionMethod
[HttpPost]
public async Task<IHttpActionResult> MyActionMethod(HttpRequestMessage request, Jobject data){//JObject requires Json.NET
dynamic json = data;
int parameter1 = json.parameter1;
int parameter2 = json.parameter2;
}
或使用
public class MyMode{
public int Parameter1{get;set;}
public int Parameter2{get;set;}
}
[HttpPost]
public async Task<IHttpActionResult> MyActionMethod(HttpRequestMessage request, MyModel model){
var parameter1 = model.Parameter1;
var parameter2 = model.Parameter2;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.