微信小程序開發(fā)筆記

微信小程序開發(fā)和vue開發(fā)差不多


使用SpringBoot開發(fā)微信小程序后臺

這次開發(fā)和以往不同的是使用了聚合工程,這是第一次使用,這一次使用的方法是先創(chuàng)建一個SpringBoot工程,并將父工程pom.xml文件中打包類型作為pom包,然后新建Module類型為Maven項目


其中common為負責(zé)存放工具類

pojo存放實體層

mapper存放dao接口

service為服務(wù)層

api為外部接口層(如controller 其中項目啟動的Application類也在其中)


一個自動生成ID的工具

import org.n3r.idworker.Sid;

@Autowired

private Sidsid;

sid.nextShort()


使用SWAGGER2工具構(gòu)建restful接口

優(yōu)點

1.可以生成文檔形式的api并提供給不同的團隊

2.便于自測,也便于領(lǐng)導(dǎo)查閱任務(wù)量

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參數(shù)可供輸入

? ? ? ? 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: 構(gòu)建 api文檔的信息

*/

? ? private ApiInfoapiInfo() {

return new ApiInfoBuilder()

// 設(shè)置頁面標(biāo)題

? ? ? ? ? ? ? ? .title("使用swagger2構(gòu)建短視頻后端api接口文檔")

// 設(shè)置聯(lián)系人

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

// 描述

? ? ? ? ? ? ? ? .description("歡迎訪問短視頻接口文檔,這里是描述信息")

// 定義版本號

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

? ? }

在控制層類類名上添加一個注解

@Api(value ="用戶注冊登陸的接口",tags = {"注冊和登陸的controller"})

value是Api的說明 tags是標(biāo)簽

在實體類中

在實體類類名上添加一個注解

@ApiModel(value ="用戶對象",description ="這是用戶對象")

當(dāng)前端傳來參數(shù)的時候可以用以下注解來配對

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

name:標(biāo)識

value:對字段的解釋

required:是否必須

dataType:傳來參數(shù)的類型

paramType:傳來的格式 如?拼接

對需要前臺傳來參數(shù)的屬性添加注解

@ApiModelProperty(value ="這是一個用戶名",name ="username",example ="kenny",required =true)

private String? username;

value:對該值的說明

name:名字

example:占位符,在沒有輸入之前的一種參考樣式

required:是否必要

對不需要傳來的屬性添加如下注解

@ApiModelProperty(hidden =true)


最后進入以下網(wǎng)址進入swagger2 ui的界面

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


登陸功能開發(fā)

這里登陸用到的redis

每一次的登陸請求后通過

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

隨機生成一個UUID作為token

然后以user-redis-session:用戶id作為鍵? UUID作為值的方式存入redis數(shù)據(jù)庫,同時為他設(shè)立生命周期保證登陸時效,然后在微信前端上的App聲明一個userInfo的變量存儲用戶的VO對象(VO就是數(shù)據(jù)層傳輸中可能和數(shù)據(jù)庫層的屬性會有差別,和需求有關(guān)系),后面可以根據(jù)這個token判斷是否成功登陸.


注銷功能開發(fā)

根據(jù)用戶id刪除reids中的數(shù)據(jù)就可以

然后讓全局變量的userInfo=null

開發(fā)頭像上傳功能

前臺調(diào)用選擇圖片和上傳圖片的api

后臺接收到文件后保存到本地硬盤中

可通過

IOUtils.copy(inputStream,fileOutputStream);

這個API進行文件的傳輸

最后更新數(shù)據(jù)庫頭像文件的路徑

如何顯示服務(wù)器端的圖片到前端上

在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的形式訪問到服務(wù)器端的資源進行圖片,音頻,視頻的顯示或查看


關(guān)于微信小程序與實體機展示不同

????今天測試登陸界面在安卓實體機發(fā)現(xiàn)輸入框位置不對放入到下一行,而蘋果機器則無問題.經(jīng)過排查發(fā)現(xiàn)輸入框長度并為設(shè)置導(dǎo)致過長使安卓機將輸入框放入到了下一行上

在實體類中某屬性加入@JsonIgnore注釋可能不讓該屬性發(fā)送到前端(比如密碼屬性不希望也傳給前端,注意是加在VO層,因為是VO層傳輸出去)


使用ffmpeg工具

這款工具是一個視頻工具,能夠通過命令行直接轉(zhuǎn)換視頻格式等其他功能.

例:ffmpeg.exe -i input.mp4 output.avi 后面兩個分別為原文件和轉(zhuǎn)換后文件的名字

使用Java使用這個工具

使用Java調(diào)用exe文件 首先新建一個List集合,這個集合負責(zé)存放命令

例如:

List command=new ArrayList<>();

command.add(ffmpegEXE);

command.add("-i");

command.add(videoInputPath);

command.add(videoOutputPath);? ? ?就能完整的構(gòu)建出一個命令

然后通過ProcessBuilder類傳入command的參數(shù)構(gòu)建一個進程類,

這個類有個方法為start方法就可以直接執(zhí)行exe文件.

如果想看文件執(zhí)行詳情,可以通過調(diào)用start方法后返回的Process對象獲取他的輸入流進行查看.

例如:

Process process=processBuilder.start();

InputStream errorStream=process.getErrorStream();

再一步步獲取其他流便可

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容