Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何在akka http中读取查询参数?_Scala_Akka Stream_Akka Http - Fatal编程技术网

Scala 如何在akka http中读取查询参数?

Scala 如何在akka http中读取查询参数?,scala,akka-stream,akka-http,Scala,Akka Stream,Akka Http,我知道akka http库在处理请求时对类类型进行封送和解封送。但现在,我需要读取GETrequest的请求参数。我尝试了parameter()方法,它正在返回ParamDefAux类型,但我需要这些值作为字符串类型 我检查以下问题的答案 但我不能做我需要的 请告诉我如何从请求中提取查询参数。或者如何从ParamDefAux 请求URL http://host:port/path?key=authType&value=Basic345 获取方法定义 val propName =

我知道akka http库在处理请求时对类类型进行封送和解封送。但现在,我需要读取
GET
request的请求参数。我尝试了
parameter()
方法,它正在返回
ParamDefAux
类型,但我需要这些值作为字符串类型

我检查以下问题的答案

  • 但我不能做我需要的

    请告诉我如何从请求中提取查询参数。或者如何从
    ParamDefAux

    请求URL

    http://host:port/path?key=authType&value=Basic345
    
    获取方法定义

     val  propName = parameter("key")
     val  propValue = parameter("value")
     complete(persistanceMgr.deleteSetting(propName,propValue))
    
    我的方法声明

    def deleteSetting(name:String,value:String): Future[String] = Future{
     code...
    }
    

    对于像
    http://host:port/path?key=authType&value=Basic345
    试试看

    path("path") {
      get {
        parameters('key.as[String], 'value.as[String]) { (key, value) =>
          complete {
            someFunction(key,value)
          }
        }
      }
    }
    

    即使在代码中不太明确,也可以从上下文中一次提取所有查询参数。您可以按如下方式使用:

    // Previous part of the Akka HTTP routes ...
    extract(_.request.uri.query()) { params  =>
      complete {
        someFunction(key,value)
      }
    }
    

    如果希望将
    查询参数作为一个整体提取

    extract(ctx => ctx.request.uri.queryString(charset = Charset.defaultCharset)) { queryParams =>
       //useyourMethod()
    }
    

    应该有用的,你试过了吗?path(“query”){parameters('name.as[String]){name=>complete(name)}}~要使其起作用,
    import akka.http.scaladsl.server.Directives.\u
    需要在那里。将键值对作为两个单独的查询参数分开是正常的做法吗(如示例所示)?另一种选择是,不使用名为“key”的查询参数,我们只将其称为authType,并将其值设为Basic345