如何在C#中将参数传递给api?

我在api网址下方

http://myapi/api/getproduct?

这些参数将从下面的类中创建

public class ApiParamters
{
   public string id {get;set;}
   public string name {get;set;}
   public List<string> otherNames {get;set;}
}

如果上述参数的值是

id=1
name="product1"
OtherNames="oldProduct1" and "oldProduct2"

然后api网址应如下

http://myapi/api/getproduct?id=1&name=product1&OtherNames=oldProduct1&OtherNames=oldProduct2

如何动态创建此类url(一般解决方案是必需的,因为我也必须为其他API实现类似的逻辑)

xiaoxiaov0 回答:如何在C#中将参数传递给api?

这就是我使用反射想到的。我确定它不能解决所有情况,但是请查看它是否对您有用。

using System.Web;
using System.Reflection;
using System.Collections.Generic;

class Program {
    public static string toQueryString(string url,object o)
    {
        var query = HttpUtility.ParseQueryString(string.Empty);

        FieldInfo[] myField = o.GetType().GetFields();

        for (int i = 0; i < myField.Length; i++)
        {
            // Is it a list?
            var t = myField[i].GetValue(o) as System.Collections.IEnumerable;
            if (t != null)
            {
                dynamic lst = myField[i].GetValue(o);
                int index = 1;
                foreach (dynamic oo in lst)
                {
                    query[myField[i].Name + index++] = oo.ToString();
                }
            }
            else
            {
                query[myField[i].Name] = myField[i].GetValue(o).ToString();
            }
        }
        return query.Count == 0 ? url : url + "?" + query.ToString();
    }
}
本文链接:https://www.f2er.com/2343405.html

大家都在问