scala
libraryDependencies += "com.typesafe.play" %% "play-server" % "2.8.8"
scala
GET /api/users controllers.UserController.getAllUsers
POST /api/users controllers.UserController.createUser
GET /api/users/:id controllers.UserController.getUserById(id: Long)
PUT /api/users/:id controllers.UserController.updateUser(id: Long)
DELETE /api/users/:id controllers.UserController.deleteUser(id: Long)
scala
package controllers
import play.api.mvc.{AbstractController, ControllerComponents}
class UserController(cc: ControllerComponents) extends AbstractController(cc) {
def getAllUsers = Action {
Ok("Get all users")
}
def createUser = Action {
Ok("Create a user")
}
def getUserById(id: Long) = Action {
Ok(s"Get user by ID: $id")
}
def updateUser(id: Long) = Action {
Ok(s"Update user with ID: $id")
}
def deleteUser(id: Long) = Action {
Ok(s"Delete user with ID: $id")
}
}
scala
package playserverexample
import controllers.UserController
import play.api.routing.Router
import play.api.{Application, ApplicationLoader, BuiltInComponentsFromContext, BuiltInComponents}
class MyApplicationLoader extends ApplicationLoader {
def load(context: ApplicationLoader.Context): Application = {
new MyComponents(context).application
}
}
class MyComponents(context: ApplicationLoader.Context)
extends BuiltInComponentsFromContext(context) {
val userController = new UserController(controllerComponents)
lazy val router: Router = Router.from {
case GET(p"/api/users") => userController.getAllUsers
case POST(p"/api/users") => userController.createUser
case GET(p"/api/users/$id") => userController.getUserById(id.toLong)
case PUT(p"/api/users/$id") => userController.updateUser(id.toLong)
case DELETE(p"/api/users/$id") => userController.deleteUser(id.toLong)
}
override def router: Router = this.router
}