parsing scala url query-string dsl

parsing - Scala-URL con analizador de cadenas de consulta y DSL de generador



query-string (5)

El despacho no ha sido mencionado aún.

http://dispatch.databinder.net/Dispatch.html

val myRequest = "http://somehost.com" / "some" / "path" <<? Map("id" -> "12345")

En Scala, ¿cómo puedo crear una URL con parámetros de cadena de consulta mediante programación?

Además, ¿cómo puedo analizar una String contiene una URL con parámetros de cadena de consulta en una estructura que me permite editar los parámetros de cadena de consulta mediante programación?


La biblioteca de Theon se ve muy bien. Pero si solo quieres un método de codificación rápida, tengo este. Se ocupa de los parámetros opcionales, y también reconocerá JsValues ​​de spray-json y los imprimirá en forma compacta antes de codificarlos. (Esas son las dos cosas por las que me tengo que preocupar, pero podría extender fácilmente el bloque de coincidencia para otros casos a los que quiera darle un tratamiento especial)

import java.net.URLEncoder def buildEncodedQueryString(params: Map[String, Any]): String = { val encoded = for { (name, value) <- params if value != None encodedValue = value match { case Some(x:JsValue) => URLEncoder.encode(x.compactPrint, "UTF8") case x:JsValue => URLEncoder.encode(x.compactPrint, "UTF8") case Some(x) => URLEncoder.encode(x.toString, "UTF8") case x => URLEncoder.encode(x.toString, "UTF8") } } yield name + "=" + encodedValue encoded.mkString("?", "&", "") }


La siguiente biblioteca puede ayudarlo a analizar y crear direcciones URL con parámetros de cadenas de consulta (Descargo de responsabilidad: esta es mi propia biblioteca): https://github.com/lemonlabsuk/scala-uri

Proporciona un DSL para crear URL con cadenas de consulta:

val uri = "http://example.com" ? ("one" -> 1) & ("two" -> 2)

Puede analizar un uri y obtener los parámetros en un Map[String,List[String]] así:

val uri = parseUri("http://example.com?one=1&two=2").query.params


Spray tiene un analizador de URI muy eficiente . El uso es así:

import spray.http.Uri val uri = Uri("http://example.com/test?param=param")

Puede configurar los parámetros de consulta de esta manera:

uri withQuery ("param2" -> "2", "param3" -> 3")