簡體   English   中英

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();
} 

這是一本好書: Getting Started with ASP.NET Web API 2 (C#)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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