微信小程序与后端SpringBoot通信

微信小程序与后端SpringBoot通信

案例概述

微信小程序请求后端SpirngBoot,中间使用Ngrok做内网穿透.

内网穿透Ngrok配置

下载Ngrok

https://ngrok.com/download

注册并配置Ngrok认证

注册完Ngrok之后进入个人主页在Auth页面找到自己的验证码,然后打开Ngrok认证即可

配置端口和协议

我这里的端口是8181,因为我Tomcat的端口是8181\

ngrok http 8181

Ngrok配置完成

配置完成之后Ngrok会为我们提供两个链接,一个是http协议的一个市https协议的.

Ngrok的作用说白了就是将你本地某个端口上运行的服务暴露在了公网上.

这里的穿透指的就是将内网中的服务穿过防火墙.

后端SpringBoot

Controller

接收微信小程序发来的请求,并根据请求做出响应

package le.controll;

import le.domain.Info;
import le.utils.JSONResult;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
* @program: SpringBootIntrodoction
* @description:
* @author: Mr.Han
* @create: 2019-01-26 22:16
**/
@Controller
public class QuickController2 {

@RequestMapping("/info")
@ResponseBody
public JSONResult quick(Info info) {
System.out.println(info.toString());
return JSONResult.ok(info);
}
}

实体类

package le.domain;


import java.io.Serializable;

/**
* @program: SpringBootIntrodoction
* @description: 测试实体类
* @author: Mr.Han
* @create: 2019-02-01 14:13
**/
public class Info implements Serializable {
private String name;
private String personName;
private Integer age;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getPersonName() {
return personName;
}

public void setPersonName(String personName) {
this.personName = personName;
}

public Integer getAge() {
return age;
}

public void setAge(Integer age) {
this.age = age;
}

@Override
public String toString() {
return "Info{" +
"name='" + name + '\'' +
", personName='" + personName + '\'' +
", age=" + age +
'}';
}
}

JSON工具类

package chen.utils;

import chen.domain.Info;
import com.fasterxml.jackson.databind.util.JSONPObject;
import org.springframework.boot.configurationprocessor.json.JSONObject;

/**
* @program: SpringBootIntrodoction
* @description: 实体类转换成JSON
* @author: Mr.Han
* @create: 2019-02-01 14:17
**/
public class JSONResult {

// 响应业务状态
private Integer status;

// 响应消息
private String msg;

// 响应中的数据
private Object data;

private String ok; // 不使用

public static JSONResult build(Integer status, String msg, Object data) {
return new JSONResult(status, msg, data);
}

public static JSONResult ok(Object data) {
return new JSONResult(data);
}

public static JSONResult ok() {
return new JSONResult(null);
}

public static JSONResult errorMsg(String msg) {
return new JSONResult(500, msg, null);
}

public static JSONResult errorMap(Object data) {
return new JSONResult(501, "error", data);
}

public static JSONResult errorTokenMsg(String msg) {
return new JSONResult(502, msg, null);
}

public static JSONResult errorException(String msg) {
return new JSONResult(555, msg, null);
}

public JSONResult() {

}

public JSONResult(Integer status, String msg, Object data) {
this.status = status;
this.msg = msg;
this.data = data;
}

public JSONResult(Object data) {
this.status = 200;
this.msg = "OK";
this.data = data;
}

public Boolean isOK() {
return this.status == 200;
}

public Integer getStatus() {
return status;
}

public void setStatus(Integer status) {
this.status = status;
}

public String getMsg() {
return msg;
}

public void setMsg(String msg) {
this.msg = msg;
}

public Object getData() {
return data;
}

public void setData(Object data) {
this.data = data;
}

public String getOk() {
return ok;
}

public void setOk(String ok) {
this.ok = ok;
}

}

微信小程序端

视图

<view bindtap="clickMe">点击发送请求</view>

绑定了一个bindtap事件,点击的时候发送请求

JS代码

// pages/requestinterface/requestinterface.js
Page({

/**
* 页面的初始数据
*/
data: {

},
clickMe: function() {
wx.request({
url: 'ngrok公网接口',
data: {
personName: "张三的父亲",
name: "张三",
age: 18
},
header: {
'content-type': 'application/json'
},
success(res) {
console.log(res.data)
}
})
}

})

完整的流程

特别提醒

因为我们使用的是Ngrok做的内网穿透,微信小程序默认识别出Ngrok的接口时非法的.

这时候我们就必须要设置不校验合法域名


   转载规则


《微信小程序与后端SpringBoot通信》 小乐 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
通过Python爬取链家所有房源和小区 通过Python爬取链家所有房源和小区
通过Python爬取链家所有房源和小区信息链家房源爬虫,基于scrapy框架,数据存储在MongoDB 由于链家的限制房源列表最多显示1000页,3000条数据,所以这里通过小区信息爬取所有房源。 # -*- coding: utf-8 -
2019-03-17
下一篇 
你如何理解用户痛点 你如何理解用户痛点
你如何理解用户痛点什么是用户“痛点” 写在前面:本文讲的“痛点”,就是指让目标用户付出某种行动的最大阻碍。 比如在美图秀秀之前,大部分图像处理软件(比如 PS)都专注于提高处理图像的性能,这个时候,让用户使用图像处理软件的最大阻碍是什么呢?
2018-12-28
  目录