微信小程序如何向java后端本地(基于springboot项目)发请求

一、微信小程序如何发请求?

1.1 请求注意事项

微信小程序发请求不是前后端ajax以及axios请求那样会存在跨域问题,微信使用的是网络请求,微信小程序支持发送https以及合法域名的请求,所以,本文章将使用微信不校验合法域名发送请求(仅限在开发以及生成环境下发起请求)。

首先开启不校验合法域名

1.2 了解wx对象调用request发起网络请求

基本语法很简单,都是模板,知道会怎么用,基本都是一套,看以下示例代码

// index.js
Page({

  data: {

    // 初始化当前页面所需的数据
    Emp: []
  },

  requestServe() {
    wx.request({
      url: 'http://localhost:8080/list',
      // data是发送到服务端的参数
       data:{
        },
      method: 'GET',
  
      // success请求成功后的回调函数
      success: res => {
        console.log(res.data.data)
        this.setData({
            Emp: res.data.data
          }

        )
      }
    })

  }

})

上面是在微信小程序所对应一个界面的js文件写的一个请求示例,简单说明一下,我们在data属性中先初始化我们从后端拿到数据要存放的一个数组,在requestServe方法中用wx对象调用request方法,方法中我们所写的配置项,url:你所要请求的路径,data:向服务端所传递的参数数据,method:请求方式(GET,POST等等),success:请求成功的回调函数。

我这里之所以调了俩次data是因为,第一次的data返回的是一个对象,具体响应看下图

res.data

res.data.data

那么这样赋值给我们的Emp数组就是以对象为元素存放在数组中了

1.3 java后端代码编写示例

这里我们以查询员工信息为例,看以下三层架构的代码

controller层

service层

mapper层

1.3数据库字段设计 

1.4 wxml以及wxss代码

wxml

<view wx:for="{{Emp}}" wx:key="id">
  <view class="v1">
    <view>
      用户名:<text>{{item.username}}</text>
    </view>
    <view>
      姓名:<text>{{item.name}}</text>
    </view>
    <view>
      入职时间:<text>{{item.entrydate}}</text>
    </view>
  </view>
</view>
<van-button type="primary" class="but1" bind:tap="requestServe">测试发送请求</van-button>
 

wxss

/**index.wxss**/
.but1{
  margin-left: 150px;
}
.v1{
  margin-bottom: 10px;
}

1.5 请求示例结果

启动后端的启动类确保服务运行

点击按钮发起请求,回显数据如下

  • 12
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
可以的,以下是一个微信小程序登录的后端Spring Boot的登陆方法: ``` import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; @RestController public class LoginController { @PostMapping("/login") public String login(@RequestBody LoginRequest loginRequest) { String url = "https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code"; url = url.replace("APPID", "your_appid_here"); url = url.replace("SECRET", "your_secret_here"); url = url.replace("JSCODE", loginRequest.getCode()); RestTemplate restTemplate = new RestTemplate(); String response = restTemplate.getForObject(url, String.class); // 解析返回结果,获取openid和session_key String openid = ""; String session_key = ""; JSONObject jsonObject = JSON.parseObject(response); if (jsonObject != null) { openid = jsonObject.getString("openid"); session_key = jsonObject.getString("session_key"); } // TODO: 根据openid和session_key进行业务处理 return "Success"; } } ``` 其中,`LoginRequest`是一个用于接收前端送的登陆请求Java类,代码如下: ``` public class LoginRequest { private String code; public String getCode() { return code; } public void setCode(String code) { this.code = code; } } ``` 该接口接收一个POST请求请求体包含一个`code`参数,该参数是前端调用`wx.login`方法得到的登录凭证。后端通过调用微信官方提供的`jscode2session`接口,传入`code`、`appid`和`secret`,获取到用户的`openid`和`session_key`。之后可以根据`openid`和`session_key`进行业务处理,比如验证用户身份、获取用户信息等。最终返回一个"Success"字符串表示登录成功。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值