微信小程序开发笔记

微信小程序开发和vue开发差不多


使用SpringBoot开发微信小程序后台

这次开发和以往不同的是使用了聚合工程,这是第一次使用,这一次使用的方法是先创建一个SpringBoot工程,并将父工程pom.xml文件中打包类型作为pom包,然后新建Module类型为Maven项目


其中common为负责存放工具类

pojo存放实体层

mapper存放dao接口

service为服务层

api为外部接口层(如controller 其中项目启动的Application类也在其中)


一个自动生成ID的工具

import org.n3r.idworker.Sid;

@Autowired

private Sidsid;

sid.nextShort()


使用SWAGGER2工具构建restful接口

优点

1.可以生成文档形式的api并提供给不同的团队

2.便于自测,也便于领导查阅任务量

3.无需过多冗余的word文档


使用方法

和SpringBoot的Application类的同级目录下新建一个类名为Swagger2

进行以下编写

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import springfox.documentation.builders.ApiInfoBuilder;

import springfox.documentation.builders.ParameterBuilder;

import springfox.documentation.builders.PathSelectors;

import springfox.documentation.builders.RequestHandlerSelectors;

import springfox.documentation.schema.ModelRef;

import springfox.documentation.service.ApiInfo;

import springfox.documentation.service.Contact;

import springfox.documentation.service.Parameter;

import springfox.documentation.spi.DocumentationType;

import springfox.documentation.spring.web.plugins.Docket;

import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration

@EnableSwagger2

public class Swagger2 {

@Bean

    public DocketcreateRestApi() {

// 为swagger添加header参数可供输入

        ParameterBuilder userTokenHeader =new ParameterBuilder();

        ParameterBuilder userIdHeader =new ParameterBuilder();

        List pars =new ArrayList();

        userTokenHeader.name("headerUserToken").description("userToken")

.modelRef(new ModelRef("string")).parameterType("header")

.required(false).build();

        userIdHeader.name("headerUserId").description("userId")

.modelRef(new ModelRef("string")).parameterType("header")

.required(false).build();

        pars.add(userTokenHeader.build());

        pars.add(userIdHeader.build());

        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()

.apis(RequestHandlerSelectors.basePackage("com.jian.controller"))

.paths(PathSelectors.any()).build()

.globalOperationParameters(pars);

    }

/**

    * @Description: 构建 api文档的信息

*/

    private ApiInfoapiInfo() {

return new ApiInfoBuilder()

// 设置页面标题

                .title("使用swagger2构建短视频后端api接口文档")

// 设置联系人

                .contact(new Contact("KennyJian", null, "kenny_jian@foxmail.com"))

// 描述

                .description("欢迎访问短视频接口文档,这里是描述信息")

// 定义版本号

                .version("1.0").build();

    }

在控制层类类名上添加一个注解

@Api(value ="用户注册登陆的接口",tags = {"注册和登陆的controller"})

value是Api的说明 tags是标签

在实体类中

在实体类类名上添加一个注解

@ApiModel(value ="用户对象",description ="这是用户对象")

当前端传来参数的时候可以用以下注解来配对

@ApiImplicitParam(name="userId",value="用户id",required =true,dataType ="String",paramType ="query")

name:标识

value:对字段的解释

required:是否必须

dataType:传来参数的类型

paramType:传来的格式 如?拼接

对需要前台传来参数的属性添加注解

@ApiModelProperty(value ="这是一个用户名",name ="username",example ="kenny",required =true)

private String  username;

value:对该值的说明

name:名字

example:占位符,在没有输入之前的一种参考样式

required:是否必要

对不需要传来的属性添加如下注解

@ApiModelProperty(hidden =true)


最后进入以下网址进入swagger2 ui的界面

http://localhost:8080/swagger-ui.html#


登陆功能开发

这里登陆用到的redis

每一次的登陆请求后通过

String uniqueToken= UUID.randomUUID().toString();

随机生成一个UUID作为token

然后以user-redis-session:用户id作为键  UUID作为值的方式存入redis数据库,同时为他设立生命周期保证登陆时效,然后在微信前端上的App声明一个userInfo的变量存储用户的VO对象(VO就是数据层传输中可能和数据库层的属性会有差别,和需求有关系),后面可以根据这个token判断是否成功登陆.


注销功能开发

根据用户id删除reids中的数据就可以

然后让全局变量的userInfo=null

开发头像上传功能

前台调用选择图片和上传图片的api

后台接收到文件后保存到本地硬盘中

可通过

IOUtils.copy(inputStream,fileOutputStream);

这个API进行文件的传输

最后更新数据库头像文件的路径

如何显示服务器端的图片到前端上

在SpringBoot的Application类的同级目录上新建一个类

@Configuration

public class WebMvcConfig implements WebMvcConfigurer {

@Override

    public void addResourceHandlers(ResourceHandlerRegistry registry) {

registry.addResourceHandler("/**")

.addResourceLocations("classpath:/META-INF/resources/")

.addResourceLocations("file:E:/code/workspace_wxxcx/jian_video_users_dev/");

    }

}


这样前端可能直接以url的形式访问到服务器端的资源进行图片,音频,视频的显示或查看


关于微信小程序与实体机展示不同

    今天测试登陆界面在安卓实体机发现输入框位置不对放入到下一行,而苹果机器则无问题.经过排查发现输入框长度并为设置导致过长使安卓机将输入框放入到了下一行上

在实体类中某属性加入@JsonIgnore注释可能不让该属性发送到前端(比如密码属性不希望也传给前端,注意是加在VO层,因为是VO层传输出去)


使用ffmpeg工具

这款工具是一个视频工具,能够通过命令行直接转换视频格式等其他功能.

例:ffmpeg.exe -i input.mp4 output.avi 后面两个分别为原文件和转换后文件的名字

使用Java使用这个工具

使用Java调用exe文件 首先新建一个List集合,这个集合负责存放命令

例如:

List command=new ArrayList<>();

command.add(ffmpegEXE);

command.add("-i");

command.add(videoInputPath);

command.add(videoOutputPath);     就能完整的构建出一个命令

然后通过ProcessBuilder类传入command的参数构建一个进程类,

这个类有个方法为start方法就可以直接执行exe文件.

如果想看文件执行详情,可以通过调用start方法后返回的Process对象获取他的输入流进行查看.

例如:

Process process=processBuilder.start();

InputStream errorStream=process.getErrorStream();

再一步步获取其他流便可

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容