【问题标题】:akka-http: How to extract list of query paramertersakka-http:如何提取查询参数列表
【发布时间】:2021-10-11 18:24:29
【问题描述】:

在akka-http中,我们如何从传入的请求中提取不同长度的查询参数列表?

请求的url可以是这样的:

.../employees?city=london,ny,paris

城市数量可能因每个请求而异。

【问题讨论】:

    标签: akka-http


    【解决方案1】:

    从您的解决方案中,您可以替换 Symbol 部分,如

    parameters("city".repeated)
    

    the akka doc

    如果您想将值保留为以逗号分隔的值列表,您可以创建一个自定义指令,如

        def paramAsList(key: String): Directive1[List[String]] =
            parameter(key)
              .map(x => x.split(",").toList)
    
    ...
    
        get {
             paramAsList("city") => cities {
    ....
    
    

    有了这个,你的网址.../employees?city=london,ny,paris 应该可以工作了

    【讨论】:

      【解决方案2】:

      它的工作原理是:

      path("searchByCity") {
              get {
                parameters(Symbol("city").*) {cities =>
                  .....
                }
              }
            }
      

      网址现在为:

      .../employees?city=london&city=ny&city=paris
      

      【讨论】:

        【解决方案3】:
        function getQueryParams(url){
           let urlParts = url.split('?');
        
           if(urlsParts?.length > 1){
            let params = urlParts[1].split('&');
            return params
           }
          return null
        }
        
        var queryParams = getQueryParams('.../employees?city=london,ny,paris')
        

        【讨论】:

        • 欢迎来到 Stack Overflow,感谢您提供答案。您能否编辑您的答案以包括对您的代码的解释?这将有助于未来的读者更好地了解正在发生的事情,尤其是那些刚接触该语言并难以理解概念的社区成员。
        猜你喜欢
        • 2017-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多