安卓前后端连接教程

  1. 首先需要安装postman软件,用于测试后端接口
  1. 用IEDA打开后端的工程并运行,观察controller文件夹下的文件,controller这一层是接受前端请求的。这里按照一个数据表一个文件进行分类。
  1. 后端接口的类别主要有3种,根据接口函数的参数前方@的不同分别@RequestBody、@RequestParam和上传文件型。如下图所示
  1. 先学会这3种不同的类型在postman中如何测试连接通信,然后再从普遍性到特殊性,在AS里面进行前后端通信。

共同的地方:不管是哪种类型的,都是用POST方法发送,并且在地址栏里填写接口的地址方式都是一样的,有2级路径,如下图所示

不同之处

类别1------Body型:以Comment中的add接口为例子

先去resources目录下的mapper目录下打开对应的Mapper.xml文件夹,这里面写的是操作数据库时的SQL语句。可以看到这里有个id为add的语句块,这是add接口收到请求后会执行的SQL语句。

在postman中,先选择Body,然后点击raw,再将格式切换为JSON,在编辑区写出JSON格式的文本,JSON文本中的键名就是SQL语句中#{}里面的变量名,键值就是你要传进去的变量值,这里一定要打开数据库看清楚对应字段的类型。如下图所示:

确认无误后点击SEND按钮,会发现IDEA运行日志中出现刚刚进行的SQL操作的结果,刷新数据库会发现该记录被添加到数据库中了,这样就成功了!(因为这是insert操作,接口函数的返回类型是void,所以postman这边不会有结果显示)

类型2------Param类型:以comment中的listByUid接口为例

这种类型非常简单,只需要看controller层就行了!在postman中先点击Params,然后在下面添加KEY,这里的KEY就是接口函数的参数,在VALUE里填入你需要传入的值。

确认无误后点击send按钮,可以看到IDEA运行日志里出现了SQL查询结果,postmna这边的结果区也显示出了JSON格式的结果,这样就成功了!(注意,这里返回的是JSON数组,后面在AS里前端获取返回值时对数组or单个元素的操作是不同的)

类型3------上传文件型:以comment的upload_img接口为例子

这种类型的接口需要看controller层和service层,请同时打开service文件夹下的impl文件夹下的对应的Service文件!下图所示是service层中找到的对应操作的函数,可见文件会被上传到后端工程文件夹下的upload文件夹下的comment_img文件夹下

打开postman,选择POST方法,地址栏输入对应的接口的路径,然后选择Body,选择form-data,在KEY这边先选择类型为File。

之后再在KEY里填入file,VALUE里选择一个你要上传的文件

确认无误后,点击send按钮,可以看到postman里收到返回的信息,code200,并且body这边有上传后的文件在服务器上的文件名,这样就成功了!

我们可以去comment_img文件夹下看看有没有刚刚上传的文件,果然是有的,hhh

  1. 在android studio里写发送post请求的代码。postman的普遍性规律测试通过后,AS里使用后端接口的道理是一样的,postman里怎么发送post请求,AS也跟着学就行了!

三种类型的共同点:以下是代码模板

上图例子是按钮按下后发送一个POST请求,首先要创建一个Thread,网络请求操作较慢,所以要在子线程里操作,在主线程里发送网络请求会造成堵塞,APP可能会崩溃的。其次是网络请求的操作要放在try语句里,毕竟网络通信不一定成功的。最后需要注意的是子线程不能直接更新UI,要在子线程里操作UI,需要借助runOnUiThread

不同点

类型1------Body型:以Comment中的add接口为例子

我们知道它在postman中是这样发送post请求的

转换为AS发送请求的代码如下所示,红框中是类型1------body型发送的请求的方式。(因为这个后端接口没有返回值,所有不需要考虑获取后端的返回值)

运行一下APP点击对应的按钮发送POST试试,看到IDEA和数据库这边都有反应,成功啦!

类型2------Param型:以comment中的listByUid接口为例

在postman中是这样发送post请求给这个接口的

那么在AS中,代码如下图所示,如下图所示进行发送:

运行APP,点击对应的按钮试试,发现AS的日志里成功打印出从后端获取过来的值,成功!

类型3------上传文件型:以comment的upload_img接口为例子

在postman中是这样发送请求的

切换到AS,如下图代码所示将文件上传到后端接口上

运行APP点击相应的按钮确认一下,看看日志,文件夹里都有了,说明成功!

文件上传注意事项

  1. 大文件上传比较慢,前端应该想办法控制一下,在文件上传成功前不要让用户觉得好像没在上传,于是狂点上传按钮导致上传了好几份文件,上传的过程以及上传成功后最好加一些UI上的提示。

  2. 上传文件的接口只是上传文件而已,数据库里保存文件路径的字段还需要调用其他相应的接口去修改哦!

  3. 小心安卓权限问题,这里打开需要上传的文件时是需要存储空间权限的!

还有这个路径只是个例子,在vlog++项目中需要用下图所示的Environment.getExternalStorageDirectory ()来获取文件所在的路径

其他注意事项

  1. 后端接口返回值都是JSON格式的,有的是JSON数组,有的是单个JSON元素。前端在接收后端返回过来的JSON文本后将其转换为JSON时需要小心这一点。

字符串转JSON数组后再遍历取值的方法:

字符串直接转为JSON对象进行取值的方法

  1. 有时候有些操作需要调用多个接口,因为1个接口不够满足需求。

情况1:先调用接口A,接口A操作成功后才能调用接口B,有严格的先后关系

不需要创建2个子线程,在一个子线程里可以先后发送POST请求

情况2:接口A和接口B可以同时操作,没有先后关系

如下图所示,创建两个并列的线程,即可同时发送多个POST给不同的后端接口

相关推荐
氦客4 小时前
Android Compose中的附带效应
android·compose·effect·jetpack·composable·附带效应·side effect
雨白5 小时前
Kotlin 协程的灵魂:结构化并发详解
android·kotlin
我命由我123455 小时前
Android 开发问题:getLeft、getRight、getTop、getBottom 方法返回的值都为 0
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
Modu_MrLiu5 小时前
Android实战进阶 - 用户闲置超时自动退出登录功能详解
android·超时保护·实战进阶·长时间未操作超时保护·闲置超时
Jeled5 小时前
Android 网络层最佳实践:Retrofit + OkHttp 封装与实战
android·okhttp·kotlin·android studio·retrofit
信田君95275 小时前
瑞莎星瑞(Radxa Orion O6) 基于 Android OS 使用 NPU的图片模糊查找APP 开发
android·人工智能·深度学习·神经网络
tangweiguo030519876 小时前
Kotlin 实现 Android 网络状态检测工具类
android·网络·kotlin
nvvas7 小时前
Android Studio JAVA开发按钮跳转功能
android·java·android studio
怪兽20147 小时前
Android多进程通信机制
android·面试