scala "org.scalatra" %% "scalatra" % "2.7.1", "org.scalatra" %% "scalatra-json" % "2.7.1", "org.json4s" %% "json4s-jackson" % "3.6.11" scala import org.json4s._ import org.json4s.jackson.JsonMethods._ case class User(id: Int, name: String, email: String) scala import org.json4s.native.JsonMethods._ import scala.util.Try object UserValidator { def validateUser(userJson: JValue): Option[User] = { val id = (userJson \ "id").extractOpt[Int] val name = (userJson \ "name").extractOpt[String] val email = (userJson \ "email").extractOpt[String] None } else { val user = User(id.get, name.get, email.get) Some(user) } } } scala import org.scalatra._ import org.scalatra.json._ import org.json4s._ import org.json4s.JsonDSL._ class UserServlet extends ScalatraServlet with JacksonJsonSupport { implicit val formats: DefaultFormats.type = DefaultFormats post("/user") { val userJson = parse(request.body) val validatedUser = UserValidator.validateUser(userJson) validatedUser match { case Some(user) => s"Valid user: $user" case None => halt(400, "Invalid user data") } } protected implicit val jsonFormats: Formats = DefaultFormats } scala class App extends LifeCycle { override def init(context: ServletContext): Unit = { context.mount(new UserServlet, "/") } }


上一篇:
下一篇:
切换中文