[英]How to call a controller method with multiple parameters in asp.net web api?
[英]ASP.NET - Call and handle Web API with multiple different parameters
我是Web API的新手,我有無法解決的問題。
這是我的問題:如何調用需要多個參數(流或對象以及兩個或三個字符串)的Web API? 以及如何在Web API中處理此參數?
例如,我的Web API中有以下方法:
public class MyController : ApiController
{
[HttpPost]
public MyObject Method(Stream s, string first, string second)
{
// take the parameters and do something
}
}
其中Stream是文件流(在其他情況下為對象)。 如何將所有這些參數添加到客戶端請求主體? 以及如何從那里獲取它們並在方法中使用?
編輯 :這個解決方案好嗎? 這里的客戶:
{
var client = new HttpClient();
var queryString = HttpUtility.ParseQueryString(string.Empty);
queryString["first"] = "true";
queryString["second"] = "false";
var uri = "https://myapi.com/api/mycontroller/method?" + queryString;
HttpResponseMessage response;
byte[] byteData = Encoding.UTF8.GetBytes(myFile);
using (var content = new ByteArrayContent(byteData))
{
content.Headers.ContentType = new MediaTypeHeaderValue("<application/json >");
response = await client.PostAsync(uri, content);
}
}
這里是Web API:
[HttpPost]
public MyObject Method([FromBody]Stream s, [FromUri]string first, [FromUri]string second)
{
//do something
}
WebApi不支持以這種方式傳遞多個參數,只需創建一個dto / model類並將該類從主體傳遞到方法即可。
public class Foo
{
public Byte[] s {get;set;}
public string first {get;set;}
public string second {get;set;}
}
WepApi控制器:
public HttpResponseMessage Register([FromBody] Foo foo)
{
//do something
return Ok();
}
更新:
如果您不想為每個方法創建類。 然后,您可以按照以下步驟使用,但建議使用第一個。
public HttpResponseMessage Register([FromBody]dynamic value)
{
//convert to attribute
string first = value.first.ToString();
string second = value.second.ToString();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.