代码之家  ›  专栏  ›  技术社区  ›  evilmandarine

如何在带有uri而不是查询字符串的servicestack中使用预定义路由?

  •  3
  • evilmandarine  · 技术社区  · 8 年前

    ServiceStack中是否可以(如果可以,如何)在uri中使用带参数的预定义路由? 我可以做一个或另一个,但两者结合似乎不起作用:

    [Route("/hello/{Name}")]
    
    // ok
    1. /hello/myname
    2. /json/reply/hello
    3. /json/reply/hello?Name=myname
    
    // not ok
    4. /json/reply/hello/myname
    "The operation 'myname' does not exist for this service"
    

    尝试过这些,但没有成功:

    [Route("/*/hello/{Name}")]
    [Route("/{*}/hello/{Name}")]
    

    特别是,为什么3是有效的,而不是4? 谢谢!

    1 回复  |  直到 8 年前
        1
  •  1
  •   mythz    8 年前

    不, ServiceStack's pre-defined routes 是 不可自定义 并遵循明确的格式:

    /{format}/[reply|oneway]/{servicename}
    

    也就是说,您可以定义自己的自定义路由,但不能更改保留其预定义行为的预定义路由。

    要在url上发送参数,需要使用querystring,例如:

     /json/reply/Hello?name=myname
    

    否则,您可以使用ServiceStack支持的其他方法发送参数,例如序列化请求正文、FormData、HTTP头等。