【问题标题】:How to map two different urls in a Akka-HTTP: one url with param and the same without the param?如何在 Akka-HTTP 中映射两个不同的 url:一个带参数的 url 和相同的不带参数的 url?
【发布时间】:2021-04-20 15:40:46
【问题描述】:

我想用相同的 URI 定义 2 个不同的 GET REST 端点,一个没有任何查询参数,另一个有查询参数。

例如:

http://host:port/resource/resourceID(不带查询参数的uri)

http://host:port/resource/resourceID?key=value(带有查询参数的uri)

如何使用 scala 在 Akka-HTTP 中实现上述要求,并且还需要 URI 中的 Segment(resource ID)。

提前致谢。

【问题讨论】:

    标签: scala rest akka-http


    【解决方案1】:

    由于您的 uri 可以带有或不带有查询参数,因此您可以执行类似的操作

    path("resource" / Segment) { resourceId => 
        parameter("key".optional) { value => //value of type Option[String]
           ???
        }
    }
    

    来自doc

    “颜色”。可选 (符号符号“颜色”。?) 将参数“color”的可选值提取为Option[String]

    【讨论】:

      【解决方案2】:

      @ccheneson 解决方案对我有用。

      如果你使用大于 10.2.0 的 Akka-HTTP 版本,那么使用 下面的解决方案

      path("resource" / Segment) { resourceId => 
          parameter("key".optional) { value => //value of type Option[String]
             ???
          }
      }
      

      其他使用下面的解决方案

      path("resource" / Segment) { resourceId => 
              parameter("key".?) { value => //value of type Option[String]
                 ???
              }
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-03-08
        • 2016-04-27
        • 1970-01-01
        • 2014-08-17
        • 1970-01-01
        • 2021-09-02
        • 2020-12-11
        • 1970-01-01
        相关资源
        最近更新 更多