有沒有辦法使用 Refit 以動態方式輸入引數?
我的改裝界面中有這段代碼:
[Get("/click?{parm}")]
Task<ApiResponse<TAny>> SaveClick(string parm);
parm 的值為:
"id=1234&x=567"
我的路線:
[HttpGet]
[Route("click")]
public void test ([FromQuery] string id)
{
Ok("Ok");
}
我得到的只是 id 引數的值為空。預期結果將是一個值為“ 1234 ”的字串
任何幫助:D?
uj5u.com熱心網友回復:
https://github.com/reactiveui/refit#dynamic-querystring-parameters
您可以使用帶有所需引數的自定義 POCO 類,也可以使用 aDictionary<string,string>來傳遞值。該詞典似乎最適合您的用例。
public class MyQueryParams
{
[AliasAs("order")]
public string SortOrder { get; set; }
public int Limit { get; set; }
public KindOptions Kind { get; set; }
}
public enum KindOptions
{
Foo,
[EnumMember(Value = "bar")]
Bar
}
[Get("/group/{id}/users")]
Task<List<User>> GroupList([AliasAs("id")] int groupId, MyQueryParams params);
[Get("/group/{id}/users")]
Task<List<User>> GroupListWithAttribute([AliasAs("id")] int groupId, [Query(".","search")] MyQueryParams params);
params.SortOrder = "desc";
params.Limit = 10;
params.Kind = KindOptions.Bar;
GroupList(4, params)
>>> "/group/4/users?order=desc&Limit=10&Kind=bar"
GroupListWithAttribute(4, params)
>>> "/group/4/users?search.order=desc&search.Limit=10&search.Kind=bar"
如果使用 Dictionary,則存在類似的行為,但沒有 AliasAs 屬性的優勢,當然也沒有智能感知和/或型別安全。
編輯:您可能可以使用HttpUtility.ParseQueryString將您的字串決議為 NameValueCollection,它基本上是一個字典。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/414081.html
標籤:
