play框架的基本应用

play框架的基本应用#1. 概述
目前kmdm项目中有java写的rest服务,今后不再扩展,将迁移到elemental中scala的play服务。

目前我觉得play框架有以下优点

1. 省代码:scala天然的便利性
2. 容易测试:测试用例很容易写
3. 容易部署: 热部署

2. 使用

2.1 配置文件

/conf/routes应用入口路由文件,所有的HTTP请求将通过该文件转发到指定的Scala对象处理。
/conf/application.conf 应用配置文件。

2.2 Filter

/app/Filter 用户认证、记录日志等过滤操作

2.3 控制层

/app/…/..controller 接收/conf/routes中的action请求,g并根据业务返回结果
2.4 启动项
/app/…/..server 可以debug启动,run启动需要删掉RUNNING_PID

2.5 测试用例

play框架测试用例非常简便,有三四行代码就可以完成一个简单的测试用例

class TestControllerSpec extends AbstractSpec {
  "testController" should {
    "POST /testPlus/2" in {
      val request = FakeRequest(method = "POST", path = "/testPlus/2").withHeaders(("Accept", "*/*")).withFormUrlEncodedBody(("b", "3"))
      implicit val timeout = Timeout(30, TimeUnit.SECONDS)
      val resp = contentAsString(route(app, request).get)(timeout)
      println(resp)
      Json.parse(resp).as[JsObject].value.get("rst").get.as[Int] mustBe 5
    }
  }

2.6 部署

sbt projectName/dist 项目在/target/universal中,为zip格式
上传到服务器,参考z022.kmtongji.com/home/kmop/kmdm/elemental下的deloy.sh 和restart.sh重写脚本即可

deloy.sh

#!/bin/sh

time=`date +%Y%m%d-%H%M%S`
rm -rf elemental-datacenter-0.1.0-SNAPSHOT
mv lib.* Jar-Backup/
mv lib lib.$time
mv logs/log.log logs/log.log.$time

unzip elemental-authority-0.1.0-SNAPSHOT.zip
mkdir lib
cp elemental-authority-0.1.0-SNAPSHOT/lib/* lib/
cp elemental-authority-0.1.0-SNAPSHOT/conf/routes conf/
cp elemental-authority-0.1.0-SNAPSHOT/bin/* ./bin/

sh restart.sh

restart.sh

#!/bin/sh
#time=`date +%Y%m%d-%H%M%S`
#mv logs/log.log logs/log.log.$time

kill `cat RUNNING_PID`
nohup bin/elemental-authority &
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值