作者多年未接触 Java 后开始探索 Scala 及 Play Framework,本文介绍相关内容:
- 示例应用介绍:以 Play Scala REST API 示例为基础,克隆并修改用于 Heroku 部署,展示关键代码点,如用 case class 建模资源、清晰集中的路由定义、简洁的控制器、使用隐式值处理 JSON 等,还体现了 Scala 现代 expressive 语法。
- 本地运行应用:确保本地安装 Java 和 sbt,运行
sbt run
后本地服务器在端口 9000 监听,可通过 curl 测试 API,如获取和创建博客文章。 准备部署到 Heroku:
- 理解 AllowHostsFilter,在
conf/application.conf
中修改允许的主机列表,包括本地和 Heroku 应用 URL。 - 设置 Play 秘密,在
conf/application.conf
中设置默认秘密密钥和从环境变量PLAY_SECRET
获取秘密。 - 区分
sbt run
和运行编译后的二进制文件,sbt stage
编译后的版本更内存高效,避免 Dyno 崩溃。 - 选择 Heroku 是因为其零配置部署,自动处理依赖和编译。
- 理解 AllowHostsFilter,在
部署应用到 Heroku:
- 安装 Heroku CLI 并登录,创建新的 Heroku 应用。
- 创建
Procfile
,指定启动命令为编译后的二进制文件,并设置动态端口。 - 创建
system.properties
文件,指定 JDK 版本。 - 设置 Heroku 应用配置变量
PLAY_SECRET
和PLAY_ALLOWED_HOSTS
。 - 推送代码到 Heroku,Heroku 自动处理构建和部署。
- 测试应用,通过 curl 验证 API 正常工作。
- 总结:从 Java 转向 Scala 没那么困难,Scala 语法简洁现代,Play 工具有学习曲线但可接近,部署到 Heroku 有一些注意点但过程简单可重复,首次 Scala 构建部署体验良好,鼓励尝试。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。