• Web篇 微信小程序与Java后端接口交互


    微信小程序与Java后端接口交互


    本文主要介绍小程序前后端数据的交互,实践演示。

    准备

    创建后端项目

    我这里就创建一个SpringBoot项目作为演示。

    在创建项目中选择Spring Initializr
    在这里插入图片描述
    要勾选SpringWeb框架,当然你也可以后面导入,确认好设置后,创建项目。

    然后在Maven依赖中调整SpringBoot的版本

        <parent>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-parentartifactId>
            <version>2.1.8.RELEASEversion>
            <relativePath/> 
        parent>
            <dependencies>
            <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-starter-webartifactId>
            dependency>
    
            <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-starter-testartifactId>
    
            dependency>
        dependencies>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    目录结构如下,缺少的自行创建:
    在这里插入图片描述
    配置文件application.yml配置如下(仅供参考),

    server:
      port: 80
      servlet:
        context-path: /
        tomcat:
          uri-encoding: utf-8
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    代码HelloWeiXin类(后端接口,在controller层):

    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * @Author: Forward Seen
     * @CreateTime: 2022/04/22 17:10
     * @Description: 微信小程序请求接口
     */
    @RestController
    public class HelloWeXin {
    
        @RequestMapping("/getMessage")
        public String getMessage(Integer userId) {
            return "Hello,微信用户" + userId + "!";
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    测试,然后我们就可以在浏览器访问测试接口
    在这里插入图片描述
    这样我们的后端接口就创建完成了。

    创建小程序项目

    打开微信开发者工具,创建项目:
    模板我使用javascript基础模板(js比较主流,推荐这个),创建即可。
    在这里插入图片描述
    具体的小程序学习请参考官方文档
    学习起来很简单,我这里直接写案例代码了。
    创建一个页面,wxml代码如下:

    
    <text>后端返回的数据:{{message}}text>
    
    • 1
    • 2

    js代码如下

    // pages/hello/helloworld.js
    Page({
      /**
       * 页面的初始数据
       */
      data: {
        message: "请求中。。。",
      },
    
      getData() {
        const that = this
        wx.request({
          url: 'http://localhost/getMessage',
          data: {
            userId: 666
          },
          method: 'GET',
          success(res) {
            console.log("请求状态:" + res.statusCode)
            console.log(res.data)
            that.setData({
              message: res.data
            })
          }
        })
      },
    
      /**
       * 生命周期函数--监听页面加载
       */
      onLoad: function (options) {
        this.getData()
      },
    
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    我对这几行代码有如下解释:
    wx.request(Object)是请求的方法,具体用法请参考文档中API的网络,
    其中url,data,method都是该Object的属性,显而易见,url就是请求的接口地址,data中存放的是请求的参数,method是请求方式,默认是get。
    success(response)是一个函数,或者说对象中的方法,它是将请求成功返回来的结果拿回来,也就是回调,回来的就是一个响应对象,数据在响应对象的data属性中,我们操作它。

    代码中有几个细节要注意:
    我把回调过程都封装在getData方法中,在onLoad方法中调用,onLoad你可以理解为内置方法,它是在页面加载是自动调用的。
    其次,在getData方法中使用了另一个对象,这个对象若向访问页面对象,要提前声明个that = this,否则作用域不用,在success方法中this用的就是wx对象了。
    如果你遇到如下问题,提示域名不安全,注意这不是跨域问题,只是由于访问的地址没有正规的检查。
    在这里插入图片描述
    你需要手动设置一下开发工具
    在这里插入图片描述
    在右上角的详情,勾选这个
    在这里插入图片描述
    就ok了。
    页面和控制台都是正常的了。
    在这里插入图片描述
    在这里插入图片描述
    这就实现了前后端的交互。

  • 相关阅读:
    给老婆写的,每日自动推送暖心消息
    【项目设计】自主HTTP服务器
    [Linux] DHCP网络
    46.<list链表的举列>
    机房安全管理制度
    lv6 嵌入式开发-Flappy bird项目(功能实现)
    【Axure高保真原型】中继器版PDF阅读卡片
    外汇天眼:美国10月CPI降至9个月低点 美联储结束加息周期的曙光来了?
    MySQL基础增删改查以及备份还原操作
    LeetCode - Medium - 62. Unique Paths
  • 原文地址:https://blog.csdn.net/qq_58099084/article/details/124352071