V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
kingkongs
V2EX  ›  C#

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

  •  
  •   kingkongs · Mar 18, 2020 · 8599 views
    This topic created in 2234 days ago, the information mentioned may be changed or developed.

    需求是这样的,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 replies    2020-03-24 14:18:56 +08:00
    kingkongs
        1
    kingkongs  
    OP
       Mar 18, 2020
    设置默认值可以解决
    MonoLogueChi
        2
    MonoLogueChi  
       Mar 24, 2020
    试试不写[FromUri],或者是所有参数写成一个类,用[FromQuery]
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2754 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 11:03 · PVG 19:03 · LAX 04:03 · JFK 07:03
    ♥ Do have faith in what you're doing.