簡體   English   中英

如何給c#中的一個api傳遞參數?

[英]How to pass parameters to an api in c#?

我下面有 api url

http://myapi/api/getproduct?

這些參數將從下面創建 class

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 url應該如下

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

如何動態創建此類 url(通用解決方案是必需的,因為我也必須為其他 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();
    }
}

暫無
暫無

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

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