как извлечь динамическую часть в SIRD роутере (Simple Router) - PullRequest
0 голосов
/ 31 августа 2018

Я создал SIRD маршрутизатор

class UserRouter @Inject()(controller:UserController) extends SimpleRouter {

  override def routes:Routes = {
    case GET (p"/signup/:token") =>{  //corresponds to email verification from user after sign up. This was the URL which the server had sent
      println("add user request with token"); //TODOM - print token
      controller.verifyUser(); //
    }

  }
}

Код routes.conf для использования маршрутизатора SIRD:

->      /ws/users                      WSRouters.UserRouter #use UserRouter for /ws/users

Действие

  def verifyUser(token:String) = Action.async{
    implicit request => {
      println("verifyUser action called with token: "+token) //TODOM - add proper handling and response
      Future(Ok("user verified"))
    }
  }

как извлечь динамическую часть из URL (token) в case GET (p"/signup/:token") и передать ее в verifyUser? В норме routes.conf. Я могу просто сделать что-то вроде GET /home/:id controllers.HomeController.index2(id), но когда я делаю то же самое в SIRD роутере, я получаю сообщение об ошибке, что token не определено

case GET (p"/signup/:token") =>{  //corresponds to email verification from user after sign up. This was the URL which the server had sent
      println("add user request with token"); //TODOM - print token
      controller.verifyUser(token); //COMPILE ERROR - token is undefined.
    }

1 Ответ

0 голосов
/ 31 августа 2018

Правильный способ - использовать $token вместо :token

case GET (p"/signup/$token") =>{  //corresponds to email verification from user after sign up. This was the URL which the server had sent
      println("add user request with token"+token); //TODOM - print token
      controller.verifyUser(token); //
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...