playframework playframework-2.2

playframework - Usar parámetros de rutas POST en Play Framework



playframework-2.2 (1)

Ruta = resolver params dentro de la URL = enviar parámetros a través de GET.

Eso significa que estás tratando de enviar la solicitud POST por ... GET params ... ¿dónde está el sentido?

James Roper explica que:

En tiempo de enrutamiento, Play aún no ha consumido el cuerpo de la solicitud, por lo que no ha analizado el formulario enviado. - y tampoco lo desea, porque es su acción la que decide cómo / si el cuerpo de la solicitud se analiza, transmite y envía a otro lugar, si Play lo hizo en el momento de la ruta, limitaría lo que podría hacer en una acción.

Desde el punto de vista de la seguridad, definitivamente es una mala idea dejar credenciales en los registros de cada máquina en la ruta del cliente.

En su lugar, debe hacerlo con una forma de manejo de formularios común, tal como se describe en la documentación de la forma base :

ruta:

POST /v1/accounts/login controllers.v1.Accounts.login

acción:

val userForm = Form( tuple( "username" -> text, "password" -> text ) ) def login = Action { implicit request => val (username, password) = userForm.bindFromRequest.get Ok("Hello " + username + ", you''re trying to login with: " + password) }

Tengo una ruta de inicio de sesión que debe transmitir sus parámetros de entrada como variables POST. Definí mi ruta así:

POST /v1/accounts/login controllers.v1.Accounts.login(username: String, password: String)

y mi controlador es así:

object Accounts extends Controller { def login(username: String, password: String) = Action { Ok("Foo " + username) } }

Cuando pruebo esta ruta utilizando Chromes Advance REST Client , solo funciona para los parámetros GET y no si los envío como application/x-www-form-urlencoded POST form data.

La documentación de Play Framework nunca menciona los parámetros de POST, pero tampoco dice que no funciona.

Creo que puede hacer que funcione si creo un Formulario y ato mi solicitud a eso, pero eso parece innecesariamente complejo.

¿Realmente no hay forma de enlazar parámetros POST usando el archivo de rutas?