如何将字典参数传递给web-api方法?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将字典参数传递给web-api方法?相关的知识,希望对你有一定的参考价值。

我在这里读过所有类似的问题,但我无法提出解决方案。我正在尝试调用web-api方法:

[HttpGet]
public SearchViewModel Get(SearchTypes type, string text, [FromUri]Dictionary<string, string> toyParams)
{
    //Code here
}

我想从uri获取最后一个参数。我试过了

http://localhost:39101/#!/search/toys/fox?someParameter=123

http://localhost:39101/#!/search/toys/fox?toyParams[0].Key=someParameter&toyParams[0].Value=123

但toyParams Dictionary总是空着。

答案

即使它很晚但是跟随方法可用于将查询参数作为名称/值对返回 - this.Url.Request.GetQueryNameValuePairs()

我跟随Url - http://localhost:49980/api/MyRestAPI/postSomeData/?a=v&d=e

以下是我的方法,用Web API 2编写 -

[HttpPost]
public IHttpActionResult SaveDataFromRestToDB(string dataKey) {
     var parameters = this.Url.Request.GetQueryNameValuePairs();
     //parameters returns KeyValuePair<string, string>[2], containing values passed in Url Query
}

希望这可以帮助!!

另一答案

一种简单的方法,而不是字典:

    //DTO
    public class SearchDTO
    {
        public int MyProperty1 { get; set; }
        public int MyProperty2 { get; set; }
        public int MyProperty3 { get; set; }
    }

MyProperty1MyProperty2MyProperty3是基于哪些必须搜索的参数。

        //GET Method
        public string Get([FromUri]SearchDTO searchDTO)
        {
            return "search result";
        }

以下是呼叫网址:

http://localhost:56880/api/values?myproperty1=1&myproperty2=2&myproperty3=3

以上是关于如何将字典参数传递给web-api方法?的主要内容,如果未能解决你的问题,请参考以下文章

如何将不同的参数传递给片段 [导航] Android

如何将字典传递给带有关键字参数的函数?

Python最小化函数:将附加参数传递给约束字典

无法以 GET 类型的方法将字典作为参数传递给 WCF REST 服务

将字典作为关键字参数传递给函数

将大量参数传递给 Python 函数的方法