首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Refit使用refit参数(字符串)作为控制器参数传递。

Refit使用refit参数(字符串)作为控制器参数传递。
EN

Stack Overflow用户
提问于 2022-01-15 21:37:41
回答 1查看 2.5K关注 0票数 2

有一种方法可以使用Refit来动态地输入参数吗?

我的刷新界面中有这样的代码:

代码语言:javascript
复制
      [Get("/click?{parm}")]
      Task<ApiResponse<TAny>> SaveClick(string parm);

parm的价值是:

代码语言:javascript
复制
        "id=1234&x=567"

我的路线:

代码语言:javascript
复制
        [HttpGet]
        [Route("click")]
        public  void test ([FromQuery] string id)
        {
            Ok("Ok");
        }

我得到的只是id参数的值为null。预期的结果将是一个值为"1234"的字符串。

有什么帮助:D?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-16 10:19:18

https://github.com/reactiveui/refit#dynamic-querystring-parameters

您可以使用带有所需参数的自定义POCO类,也可以使用Dictionary<string,string>传递值。这本词典似乎最适合你的用法。

代码语言:javascript
复制
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"

如果使用字典,也存在类似的行为,但是没有AliasAs属性的优点,当然也没有intellisense和/或类型安全性。

编辑:您可能可以使用HttpUtility.ParseQueryString将字符串解析为NameValueCollection,这基本上是一个字典。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70725642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档