簡體   English   中英

Web API-自定義路由

[英]Web API - custom routing

我在為Web API創建適當的routeTemplate時遇到問題。 請求示例如下所示:

POST /mobile?command=doSomething?parameter1=value&parameter2=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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM