最新消息:380元/半年,推荐全网最具性价比的一站式编程学习平台码丁实验室

基于关系型数据库的App Inventor网络应用(8)

App Inventor 少儿编程 2344浏览 0评论

友情提示:380元/半年,儿童学编程,就上码丁实验室

第八节 在App Inventor中访问Node-RED服务

 

手机端的单词本应用将要实现两个目标:

(1) 向数据库插入新记录,即,新增单词;

(2) 根据英文单词查询对应的中文,或查询全部单词。

在浏览器中打开App Inventor开发环境,创建一个新项目——单词本,用户界面如图39所示。组件列表中显示了项目中的全部组件,其中的web客户端组件用于访问网络服务。

基于关系型数据库的App Inventor网络应用(8)

图39 在App Inventor开发环境中创建新项目——单词本

 

  1.  新增单词

 

(1) 在Node-RED中新增一个输入节点http,设置其Method为POST,URL为“/insertWord”,设节点标签为新增单词,如图40所示。

基于关系型数据库的App Inventor网络应用(8)

图40 编辑输入http节点——新增单词

(2) 新增function节点,将下列代码复制粘贴为函数体,如图41所示。

var english = msg.payload.english;

var chinese = msg.payload.chinese;

msg.topic= “insert into word (wid,english,chinese) values (null, ‘” + english+ “‘,’” + chinese + “‘)”;

return msg;

 

基于关系型数据库的App Inventor网络应用(8)

图41 编辑函数节点——插入单词

 

(3) 新增输出节点http response,编辑该节点,设置请求头及状态码,如图42所示,请求头具体设置见表1。

基于关系型数据库的App Inventor网络应用(8)

图42 编辑输出节点httpresponse——返回新增结果

 

表1 http请求头设置

请求头属性

属性取值

Access-Control-Allow-Origin

*

Access-Control-Allow-Methods

POST,GET

Access-Control-Allow-Headers

X-PINGOTHER, Content-Type

Access-Control-Allow-Credentials

true

 

 

(4) 复制数据库节点,并连接上述节点,并点击部署按钮,使新增的程序生效,如图43所示。

基于关系型数据库的App Inventor网络应用(8)

图43 部署新增的程序

至此我们完成了服务器端程序的编写,现在回到App Inventor中,编写客户端程序。

(5) 编写客户端程序:将开发环境切换到编程视图,编写新增按钮的点击事件,代码如图44所示。注意此时的URL地址中,将localhost改为本机的ip地址,否则测试时AI伴侣找不到localhost。

基于关系型数据库的App Inventor网络应用(8)

图44 编写新增单词的客户端程序

 

(6)测试

测试结果如图45所示。输入英文单词及中文字,然后点击新增按钮。服务器端返回状态码200,说明插入操作成功。

基于关系型数据库的App Inventor网络应用(8)

 

基于关系型数据库的App Inventor网络应用(8)

图45 插入单词的测试结果

 

我们还可以从Node-RED的debug窗口中查看刚刚提交的请求,如图46所示。

基于关系型数据库的App Inventor网络应用(8)

图46 在Node-RED的debug窗口中查看请求信息

 

2. 单词查询

 

(1) 在Node-RED中添加一个输入http节点,并作如下设置,如图47所示。

基于关系型数据库的App Inventor网络应用(8)

图47 编辑查询全部单词的http输入节点

 

(2) 新增function节点,编写查询全部记录的函数体,如图48所示。

基于关系型数据库的App Inventor网络应用(8)

图48 查询全部单词的函数节点

 

(3) 连接节点并部署程序

如图49所示,查询全部单词的流与与查单词的流公用一个数据库节点及http response节点。点击部署按钮,使更新后的程序生效。

基于关系型数据库的App Inventor网络应用(8)

图49 两个查询流程序公用一个数据库节点

 

(4) 编写客户端程序

在App Inventor编程视图,编写查询按钮的点击事件,代码如图50所示。注意URL地址为本机的ip地址,当英文输入框为空时,返回全部单词,否则,精确返回查询的单词。

基于关系型数据库的App Inventor网络应用(8)

图50 在按钮点击事件中发送web请求

 

为了处理返回的数据,创建一个有返回值的过程——单词表,代码如图51所示。

基于关系型数据库的App Inventor网络应用(8)

图51 创建一个有返回值的过程——单词表

 

再编写web客户端组件的收到文本事件,代码如图52所示。

基于关系型数据库的App Inventor网络应用(8)

图52 显示Web服务返回的结果

 

(5)测试:在AI伴侣中对上述代码进行测试,结果如图53所示。

基于关系型数据库的App Inventor网络应用(8)

 

基于关系型数据库的App Inventor网络应用(8)

图53 在AI伴侣中测试查询操作

程序写到这里,我们已经实现了最初设定的目标,用App Inventor访问关系型数据库。这个案例从功能上看非常简单,但是在实现技术上跨越了前后端,从后端的数据库服务器、web服务器、web应用服务器,到前端的安卓应用,麻雀虽小,五脏俱全。

文本希望能够起到抛砖引玉的作用,并试探读者对于这类混合应用的关注程度。未来如果这个专题能够获得更多的关注,我们就可以继续探讨更深一步的话题。

您必须 登录 才能发表评论!