SpringBoot基础实践开源项目(一)
跟着mall商城学习
mall商城是一个SpringBoot的开源项目,既有mall商城的完整功能实现项目mall
,也有逐步指导的教程项目mall-learning
:
boot开源项目
boot
是我跟着mall写的小项目,目的是绕开复杂的业务逻辑,只考虑最基础的技术实践,掌握SpringBoot框架的使用。计划会包含内容:SpringBoot MyBatis;Swagger;Redis;JWT认证;定时任务;ElasticSearch;Mongodb;RabbitMQ;OSS文件上传;AOP切面等。
第一波分享内容
项目搭建:
-
SpringBoot框架
-
MySQL表
-
MyBatis自动生成Mapper和Model
用户增删改查:
-
获取所有用户列表、添加用户、更新指定id用户信息、删除指定id的用户、验证授权、获取指定id的用户详情、修改密码、重置密码
登录:
-
登录以后返回token
-
JWT认证
附带JUnit5测试代码
项目附带了JUnit5测试代码:
在写测试代码过程中也体会到了良好约定带来的收益,比如:更新用户接口的测试代码,会通过@BeforeEach
在测试前调用新增接口,准备好数据,拿到用户id,存入变量池vars中:
-
package com.example.boot.user;
-
-
import com.alibaba.fastjson.JSONObject;
-
import org.apache.commons.lang3.RandomStringUtils;
-
import org.junit.jupiter.api.BeforeEach;
-
import org.junit.jupiter.api.Test;
-
import org.slf4j.Logger;
-
import org.slf4j.LoggerFactory;
-
import org.springframework.http.*;
-
import org.springframework.web.client.RestTemplate;
-
-
import java.util.HashMap;
-
import java.util.Map;
-
-
public class UpdateTest {
-
private static final Logger LOGGER = LoggerFactory.getLogger(UpdateTest.class);
-
Map<String, Object> vars = new HashMap<>();
-
-
-
public void create() {
-
LOGGER.info("新增");
-
String username = RandomStringUtils.randomAlphabetic(6);
-
vars.put("username", username);
-
String url = "http://localhost:8070/api/users";
-
RestTemplate restTemplate = new RestTemplate();
-
HashMap<String, Object> body = new HashMap<>();
-
body.put("username", username);
-
body.put("password", "qa123456");
-
HttpHeaders headers = new HttpHeaders();
-
headers.setContentType(MediaType.APPLICATION_JSON);
-
HttpEntity<HashMap<String, Object>> httpEntity = new HttpEntity<>(body, headers);
-
ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.POST, httpEntity, String.class);
-
System.out.println(responseEntity.getBody());
-
-
LOGGER.info("获取id");
-
JSONObject bodyJson = JSONObject.parseObject(responseEntity.getBody());
-
Long id = bodyJson.getLong("id");
-
vars.put("id", id);
-
System.out.println(id);
-
}
-
-
-
public void update() {
-
LOGGER.info("更新");
-
String url = String.format("http://localhost:8070/api/users/%d", vars.get("id"));
-
RestTemplate restTemplate = new RestTemplate();
-
HashMap<String, Object> body = new HashMap<>();
-
body.put("username", vars.get("username") "_new");
-
HttpHeaders headers = new HttpHeaders();
-
headers.setContentType(MediaType.APPLICATION_JSON);
-
HttpEntity<HashMap<String, Object>> httpEntity = new HttpEntity<>(body, headers);
-
ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.PUT, httpEntity, String.class);
-
System.out.println(responseEntity.getBody());
-
JSONObject bodyJson = JSONObject.parseObject(responseEntity.getBody());
-
Long id = bodyJson.getLong("id");
-
assert id != null;
-
}
-
}
然后在@Test
测试方法中,从变量池vars
中提取出id,传入url中调用更新接口。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgbiefb
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01