SIRD 路由器未解析路由
SIRD Router not resolving a route
我已经创建了一个 SIRD
路由器。但这并没有解决我的路线。以下代码有什么错误?
包 WSRouters.User
中的 SIRD 路由器文件 UserRouter.scala
package WSRouters.User
import javax.inject.Inject
import play.api.mvc._
import play.api.routing.Router.Routes
import play.api.routing.SimpleRouter
import play.api.routing.sird._
import controllers.UserController
class UserRouter @Inject()(controller:UserController) extends SimpleRouter {
override def routes:Routes = {
case GET(p"users/add") => {
println(s"add user request");
controller.addUser();
}
}
}
routes.conf
#using SIRD to handle user related web services
-> /users WSRouters.User.UserRouter
控制器
package controllers
import play.api.mvc._
import javax.inject._
import scala.concurrent.{ExecutionContext, Future}
class UserController @Inject()(cc: ControllerComponents)(implicit exec: ExecutionContext) extends AbstractController(cc){
def addUser = Action.async{ implicit request => Future{Ok("hello from the User controller")}}
}
当我输入路径 http://localhost:9000/users/add
时,出现以下错误。尝试的路线甚至没有我的路由器。
Action Not Found
For request 'GET /users/add'
These routes have been tried, in this order:
1 GET / controllers.HomeController.index
2 GET / homecontrollers.HomeController.index
3 GET / countcontrollers.CountController.count
4 GET / messagecontrollers.AsyncController.message
5 GET /assets/$file<.+> controllers.Assets.versioned(path:String = "/public", file:Asset)
我是否需要进行一些配置以便 Play 使用我的路由器?
错误是路由器中的代码应该是case GET(p"/add")
而不是case GET(p"users/add")
,因为/user
已经映射到UserRouter
通过 routes 文件中的以下行:
-> /users WSRouters.User.UserRouter
我的原始代码 case GET(p"users/add")
会解析 http://localhost:9000/users/users/add
。
我已经创建了一个 SIRD
路由器。但这并没有解决我的路线。以下代码有什么错误?
包 WSRouters.User
中的 SIRD 路由器文件 UserRouter.scalapackage WSRouters.User
import javax.inject.Inject
import play.api.mvc._
import play.api.routing.Router.Routes
import play.api.routing.SimpleRouter
import play.api.routing.sird._
import controllers.UserController
class UserRouter @Inject()(controller:UserController) extends SimpleRouter {
override def routes:Routes = {
case GET(p"users/add") => {
println(s"add user request");
controller.addUser();
}
}
}
routes.conf
#using SIRD to handle user related web services
-> /users WSRouters.User.UserRouter
控制器
package controllers
import play.api.mvc._
import javax.inject._
import scala.concurrent.{ExecutionContext, Future}
class UserController @Inject()(cc: ControllerComponents)(implicit exec: ExecutionContext) extends AbstractController(cc){
def addUser = Action.async{ implicit request => Future{Ok("hello from the User controller")}}
}
当我输入路径 http://localhost:9000/users/add
时,出现以下错误。尝试的路线甚至没有我的路由器。
Action Not Found
For request 'GET /users/add'
These routes have been tried, in this order:
1 GET / controllers.HomeController.index
2 GET / homecontrollers.HomeController.index
3 GET / countcontrollers.CountController.count
4 GET / messagecontrollers.AsyncController.message
5 GET /assets/$file<.+> controllers.Assets.versioned(path:String = "/public", file:Asset)
我是否需要进行一些配置以便 Play 使用我的路由器?
错误是路由器中的代码应该是case GET(p"/add")
而不是case GET(p"users/add")
,因为/user
已经映射到UserRouter
通过 routes 文件中的以下行:
-> /users WSRouters.User.UserRouter
我的原始代码 case GET(p"users/add")
会解析 http://localhost:9000/users/users/add
。