V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kingkongs
V2EX  ›  C#

web api Get 如何传多个可选参数?

  •  
  •   kingkongs · 2020-03-18 17:26:23 +08:00 · 7973 次点击
    这是一个创建于 1703 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需求是这样的,http 需要接收若干个参数,采用[HttpGet],其中 page 参数和 size 参数都是有默认值的,其他参数都不是必须的。 当我使用[FromUri]传递参数的时候,测试时只选择了 page 和 size 参数,出现错误如下:

    {
        "Message": "找不到与请求 URI“http://localhost/open/user/supplier/users?page=2&size=10”匹配的 HTTP 资源。",
        "MessageDetail": "在控制器“User”上找不到与该请求匹配的操作。"
    }
    

    只有将全部参数都带上才没有错误,比如这样

    http://localhost/open/user/supplier/users?account=dw2071&page=2&size=10
    

    但我现在的需求是参数不是必须的 目前代码是这样的

    public IHttpActionResult getUsers(
        [FromUri] string account,
        [FromUri] string name,
        [FromUri] string insDateL,
        [FromUri] string insDateU,
        [FromUri] string status,
        [FromUri] bool direction,
        [FromUri] string sort,
        [FromUri] int page = 1,
        [FromUri] int size = 10
        )
        {
        // exp
        }
    

    我想问一下如何解决这个问题?谢谢

    2 条回复    2020-03-24 14:18:56 +08:00
    kingkongs
        1
    kingkongs  
    OP
       2020-03-18 21:03:33 +08:00
    设置默认值可以解决
    MonoLogueChi
        2
    MonoLogueChi  
       2020-03-24 14:18:56 +08:00
    试试不写[FromUri],或者是所有参数写成一个类,用[FromQuery]
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2699 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 12:25 · PVG 20:25 · LAX 04:25 · JFK 07:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.