前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >开发你的第一个web-platform应用

开发你的第一个web-platform应用

作者头像
用户2936994
发布2022-07-21 13:55:45
2440
发布2022-07-21 13:55:45
举报
文章被收录于专栏:祝威廉祝威廉

基础环境要求

系统:MacOS/Linux

基础软件: JDK8,Conda(Python 3.6+),MySQL (5.6)

发型包: app_runtime

可以通过如下方式下载:

代码语言:javascript
复制
wget http://download.mlsql.tech/app-runtime-1.0.0/app-runtime_2.11-1.0.0.jar

该发型包大概200M,需要点耐心。下载完后,配置下环境变量:

代码语言:javascript
复制
export APP_RUNTIME_JAR=/app-runtime_2.11-1.0.0.jar

首先,安装工具集:

代码语言:javascript
复制
pip install watchdog requests click uuid sfcli  

接着新建项目,假设名字叫hello-wp

代码语言:javascript
复制
sfcli create --name hello-wp

如果需要web ui界面,则添加`--include_ui` 即可。这里我们不需要开发ui,所以没有配置。

使用idea/code IDE打开项目,比如:

代码语言:javascript
复制
idea hello-wp/

项目结构是这个样子的:

打开`tech.mlsql.app_runtime.example.action.ExampleAction`,你会发现已经有一个最简单的例子了。我们添加一个新的参数:

代码语言:javascript
复制
object ExampleAction {

  object Params {
    val ECHO = Input("echo", "")
    val USER_NAME = Input("userName", "")
  }

接着修改Action内容:

代码语言:javascript
复制
override def _run(params: Map[String, String]): String = {
    JSONTool.toJsonStr(List(Map("value" -> s"Hello ${params(ExampleAction.Params.USER_NAME.name)}: ${params(ExampleAction.Params.ECHO.name)}")))
  }

ExampleAction默认在`tech.mlsql.app_runtime.plugin.PluginDesc` 注册上了。现在我们可以测试下,在项目主目录开启编译:

代码语言:javascript
复制
sfcli compile  --mvn mvn --dev

编译完成后可以在新窗口启动项目:

代码语言:javascript
复制
sfcli run --dev --mvn mvn

现在可以访问我们的接口了:

我们也可以web化我们的接口,安装插件:

代码语言:javascript
复制
sfcli plugin --add ar_runtime_web_console:1.0.0 --token c2b9e9ca-2308-4599-a395-1661f99a92ba

现在可以访问web页面了:

代码语言:javascript
复制
http://127.0.0.1:9007/ar_runtime_web_console/

进入我们的example 接口:

可以看到结果:

我们的第一个web应用就开发好了。

现在,我们希望添加数据库支持。web-platform需要你先在配置文件(config/application.yml)里配置一个元数据库,假设数据库名字叫basic_app_runtime,表结构如下:

代码语言:javascript
复制
CREATE TABLE `dict_store` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(256) DEFAULT NULL,
  `value` text,
  `dict_type` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8;

修改后的配置文件大概是这样的:

代码语言:javascript
复制
development:
  datasources:
    mysql:
      host: 127.0.0.1
      port: 3306
      database: basic_app_runtime
      username: xxxx
      password: xxxxx
      initialSize: 8
      disable: false 
      removeAbandoned: true
      testWhileIdle: true
      removeAbandonedTimeout: 30
      maxWait: 100
      filters: stat,log4j
    mongodb:
      disable: true
    redis:
      disable: true

disable要设置为false,然后修改账号和密码。在终端重启我们的应用:

代码语言:javascript
复制
sfcli run --dev --mvn mvn

现在我们在数据库app_runtime_full(你可以随意取名字)创建一个表:

代码语言:javascript
复制
CREATE TABLE `example` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `echo` text,
  `user_name` text,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

然后重新添加如下两个插件:

代码语言:javascript
复制
sfcli plugin --add app_runtime_with_db:1.0.0 --token c2b9e9ca-2308-4599-a395-1661f99a92ba
sfcli plugin --add ar_runtime_web_console:1.0.0 --token c2b9e9ca-2308-4599-a395-1661f99a92ba

然后通过web界面添加下数据库信息:

这样,我们的应用需要的数据库信息就被记录在元数据库里。

现在我们继续修改我们的代码,可以在 `package tech.mlsql.app_runtime.example.quill_model` 里添加一个case class,

代码语言:javascript
复制
case class Example(id:Int,echo:String,userName:String)

新增两行Import语句在ExampleAction中:

代码语言:javascript
复制
import tech.mlsql.app_runtime.example.PluginDB.ctx
import tech.mlsql.app_runtime.example.PluginDB.ctx._

然后可以使用ctx操作数据库了:

代码语言:javascript
复制
 override def _run(params: Map[String, String]): String = {
    val userName = params(ExampleAction.Params.USER_NAME.name)
    val echo = params(ExampleAction.Params.ECHO.name)
    ctx.run(ctx.query[Example].insert(_.userName -> lift(userName), _.echo -> lift(echo)))
    JSONTool.toJsonStr(List(Map("value" -> s"Hello : ${params(ExampleAction.Params.ECHO.name)}")))
  }

因为你修改了代码,系统会自动重启项目。你需要再重新执行下插件添加的动作:

代码语言:javascript
复制
sfcli plugin --add app_runtime_with_db:1.0.0 --token c2b9e9ca-2308-4599-a395-1661f99a92ba
sfcli plugin --add ar_runtime_web_console:1.0.0 --token c2b9e9ca-2308-4599-a395-1661f99a92ba

然后打开界面填写:

查看数据库:

已经正常入库了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-02-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档