事件起因
在开发一个关于微信小程序的过程中,有一个这样的需求,要求生成微信小程序的太阳码,然而这个东西的请求方式我们是这样的:我作为后端服务去请求这个太阳码的二维码,然后将获取到的太阳码二维码的图片返回给小程序端进行接收,然后小程序端进行一个展示
原本以为他们小程序端直接去请求那个图片就行了,但是最后商讨下来还是由我们后端去请求这个太阳码,然后返回给前端去展示
过程中就遇到一些数据请求和转换的问题,就先在这儿记录一下,以便后来者踩坑
环境和工具
java jdk1.8
操作过程
先是接口层,最后完成的版本是这样:
@PostMapping("/getSunQRCode")
@ApiOperation(value = "生成太阳码-获取小程序不限制的QR码", notes = "生成太阳码-获取小程序不限制的QR码")
public Result<SunQRCodeVo> getUnlimitedQRCode(@RequestBody UnlimitedQRCodeDTO unlimitedQRCodeDTO, HttpServletResponse response) throws IOException {
return newUserService.getUnlimitedQRCode(unlimitedQRCodeDTO);
}
大致解释j就是一个post请求,然后这个请求返回的是一个封装后的实体的Result,然后内部的实体是一个字符串(之所以是字符串,是因为最后图片以base64编码的格式返回给前端的,不然就得以流的形式返回)
然后就是具体的实现层的操作,大致操作如下:
通过微信的接口请求太阳码 ----》将拿到的太阳码转换为对应的图片格式(微信那边默认返回的是jpeg格式,因为前端的要求,需要转换为png的格式,然后再转换为对应的base64的字符串,然后再返回给前端) ----》转换为base64的格式,封装实体返回给前端。
解决办法
最后的一个实现层的代码版本(这个代码有个优势:就是可以根据微信接口的返回内容,如果请求正确,微信的这个接口它会直接返回buffer的图片,但如果请求有问题,它的返回内容又是一个json,所以这种情况可以根据返回的内容去判断,然后再具体去考虑如何接收)
import org.springframework.web.client.RestTemplate;
@Service("NewUserService")
public class NewUserServiceImpl extends BaseServiceImpl<NewUserDao, NewUserDO, BaseDTO> implements NewUserService {
private static RestTemplate restTemplate;
public static RestTemplate getRestTemplate() {
if (null == restTemplate) {
synchronized (RestTemplate.class) {
if (null == restTemplate) {
restTemplate = new RestTemplate();
}
}
}
return restTemplate;
}

本文记录了微信小程序开发中生成太阳码的过程。后端请求太阳码二维码图片并返回给前端展示,涉及数据请求和转换。介绍了环境工具为Java JDK1.8,阐述操作过程、解决办法,还提及遇到的读取InputStream问题及使用ChatGPT的感受。
最低0.47元/天 解锁文章
238

被折叠的 条评论
为什么被折叠?



