首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >播放2.1用于Http服务器

播放2.1用于Http服务器
EN

Stack Overflow用户
提问于 2013-06-19 13:58:31
回答 3查看 204关注 0票数 0

我刚开始玩框架游戏。我的要求很简单。我想使用play框架在scala中创建rest服务器。我可以玩2-迷你游戏,但它似乎已经过时了。

我希望在我的项目中使用play 2.1。与其将play框架设置为依赖关系,我只想要核心模块。所以我有几个问题-

  1. 游戏的核心模块是什么?模块名是什么?
  2. 使用核心模块创建异步http服务器是否足够?
  3. 这个链接说我可以使用核心模块而不是玩迷你游戏。如果这是真的,我在哪里可以得到更多的信息。
EN

回答 3

Stack Overflow用户

发布于 2013-06-19 14:03:48

您只需简单地设置一条路由,然后将其指向解析您发送的数据的控制器。以下是json解析和使用play返回响应的示例。

http://www.playframework.com/documentation/2.1.1/ScalaJsonRequests

代码语言:javascript
复制
package controllers

import play.api._
import play.api.mvc._
import play.api.libs.json._
// you need this import to have combinators
import play.api.libs.functional.syntax._

object Application extends Controller {

  implicit val rds = (
    (__ \ 'name).read[String] and
    (__ \ 'age).read[Long]
  ) tupled

  def sayHello = Action { request =>
    request.body.asJson.map { json =>
      json.validate[(String, Long)].map{ 
        case (name, age) => Ok("Hello " + name + ", you're "+age)
      }.recoverTotal{
        e => BadRequest("Detected error:"+ JsError.toFlatJson(e))
      }
    }.getOrElse {
      BadRequest("Expecting Json data")
    }
  }
}

或者更简单..。

代码语言:javascript
复制
def sayHello = Action(parse.json) { request =>
    request.body.validate[(String, Long)].map{ 
      case (name, age) => Ok("Hello " + name + ", you're "+age)
    }.recoverTotal{
      e => BadRequest("Detected error:"+ JsError.toFlatJson(e))
    }
  }
票数 0
EN

Stack Overflow用户

发布于 2013-06-19 15:34:15

Play Framework是一个高度模块化的项目。在内部,它由大约20个子项目组成。如果您需要它们,可以将其中一些作为库依赖项包括在您的项目中,例如anormjdbc。其他项目(如PlayExceptionsRoutesCompilerTemplatesCompiler等)对于任何Play应用程序来说都是必不可少的,因此您不需要声明对它们的依赖。这些项目可以被称为Play Framework的“核心”。

换句话说,如果您需要一个具有最小依赖项的Play应用程序,就不要声明不需要的依赖项。

资料来源:https://github.com/playframework/Play20

票数 0
EN

Stack Overflow用户

发布于 2014-02-05 10:19:39

我不认为这里有什么问题。例如,这是我的build.sbt,用于一个非常小的项目,它使用json,其中我想使用Play库,但不一定要创建一个完整的Play应用程序:

代码语言:javascript
复制
name := "my-small-project"

version := "0.0.1-SNAPSHOT"

resolvers ++= Seq(
    "TypeSafe Repo" at "http://repo.typesafe.com/typesafe/releases",
    "Sonatype Repo" at "http://oss.sonatype.org/content/repositories/releases"
)

libraryDependencies ++= Seq(
    "org.specs2" %% "specs2" % "2.3.7" % "test",
    "commons-codec" % "commons-codec" % "1.8",
    "com.typesafe.play" % "play_2.10" % "2.2.1",
    "com.typesafe.play" % "play-json_2.10" % "2.2.1"
)

您仍然可以在这里删除一些依赖项,特别是在不需要Base64编码的情况下。在这里,我认为play_2.10是您感兴趣的“核心”。不过,你应该熟悉sbt,但这并不难。

还请记住,“Play应用程序”和“使用Play库的应用程序”之间的区别是非常模糊的,特别是当您使用sbt时。这就是它的美妙之处,这展示了游戏创建者们是如何通过为他们的项目创建定制的系统需求来努力避免再次发明轮子的。例如,您可以输入一个Play应用程序dir并输入"sbt编译“,而不是触发一个播放控制台,它应该工作得很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17193221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档