2021年1月21日
使用 junit 对 springboot 应用进行单元测试 使用 springboot 2.2.5 开发 web 应用的时候,需要进行单元测试。 普通的 java 的单元测试比较简单,对于采用 REST 方式开发的微服务,则需要使用 WEB 环境进行测试。 示例代码如下: package com.sample.api; import com.sample.api.controller.TestController; import com.sample.api.entity.User; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.web.client.TestRestTemplate; import org.springframework.test.context.junit4.SpringRunner; import javax.annotation.Resource; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) public class TestControllerTest { @Resource private TestRestTemplate restTemplate; @Test public void test(){ User user = restTemplate.getForObject("/users/abc", User.class); System.out.println(user); Assert.assertNotNull(user); Assert.assertEquals("abc", user.getUsername()); } } 需要注意的是对于 SpringBoot 里……
阅读全文
2021年1月12日
Vue 单页项目发布到 Nginx 独立目录 Nginx 配置 对于 Nginx 的配置与原来 Nginx 和 Tomcat 搭配配置完全一样,无需任何改动。例如: server { listen 80; # listen somename:8080; charset utf-8; server_name localhost; gzip on; location / { proxy_pass http://localhost:8080/; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header ABCXYZ-REAL-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Nginx-Proxy true; proxy_set_header Connection ""; #limit_req zone=limitdashi burst=5 nodelay; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } } 通过这样一个代理将请求转发给后端的 Tomcat 服务器 目录说明 现有使用 Vue 3.3 生成的 VuePro……
阅读全文
2021年1月11日
VSCode 如何避免 es6 import {} 自动换行 import { Message } from "element-ui"; // 格式化后立马变成下面这样,丑死了 import { Message } from "element-ui"; 其实只要设置 VsCode 的设置即可。 在 MacBook Pro 下: Code -> 首选项 -> 设置 然后搜索 beautify 并点击在 json 中编辑,在 json 配置文件的末尾加入如下配置即可: "beautify.config": { "brace_style": "collapse,preserve-inline" } 测试过确实可行! 问题参考链接: es6 import 格式化 GitHub issue 链接:https://git……
阅读全文
2021年1月11日
我的 .eslintrc.js 配置 module.exports = { root: true, env: { node: true, }, extends: ["plugin:vue/essential", "@vue/standard"], rules: { "no-console": process.env.NODE_ENV === "production" ? "error" : "off", "no-debugger": process.env.NODE_ENV === "production" ? "error" : "off", semi: 0, "no-throw-literal": 0, "keyword-spacing": [ "error", { before: true, after: true, }, ], "space-before-function-paren": 0, quotes: [0, "double"], }, parserOptions: { parser: "babel-eslint", }, };……
阅读全文
2021年1月10日
Vue 开发时如何忽略 ES Lint 校验 使用.eslintignore 文件 在 Vue 工程的根目录下,打开 eslint 的忽略文件.eslintignore(若无则创建一个) 不想校验什么文件,就写进去。 假如不想校验所有的 js 文件,写上*.js 就可以了。……
阅读全文
2021年1月10日
使用 ElementUI 上传图片前预览 当使用 ElementUI 上传图片时,需要先预览该选中的图像文件 <div class="layui-inline"> <img v-if="poster.length>0" :src="poster" width="40" height="40" /> <el-upload class="upload-demo" ref="upload" action="https://jsonplaceholder.typicode.com/posts/" :on-change="onFileSelected" :auto-upload="false" :multiple="false" :with-credentials="true" :show-file-list="false" accept="image/*" > <el-button slot="trigger" size="small" type="primary">选取文件</el-button> <div slot="tip" class="el-upload__tip">只……
阅读全文
2021年1月9日
使用 axios 的 Promise 封装 简单的 axios 封装 ajax.js import axios from "axios"; const headers = { "Content-Type": "application/x-www-form-urlencoded" }; function process(res) { let body = res.data; if (body.code === 0) { return new Promise(function (resolve, reject) { resolve(body.data); }); } else { return new Promise(function (resolve, reject) { reject({ code: body.code, msg: body.msg }); }); } } function get(uri, params) { return axios.get(uri, { params: params, headers: headers }).then((res) => { return process(res); }); } function post(uri, params) { let data = new FormData(); for (let item in params) { data.append(item.toString(), params[item].toString()); } return axios .post(uri, data, { headers: headers, }) .then((res) => { return process(res); }); } function remove(uri, params) { return axios .delete(uri, { params: params, headers: headers, }) .then((res) => { return process(res); }); } const ajax = { get: get,……
阅读全文
2021年1月8日
axios 使用 post 的正确姿势 当进行 Ajax POST 请求时,后端程序使用 request.getParameter 的方式获取参数,需要将 axios 的缺省配置进行调整才可能正确传递参数 直接上代码: function post(uri, params) { let data = new FormData(); for (let item in params) { data.append(item.toString(), params[item].toString()); } return axios.post(uri, data, { headers: { "Content-Type": "application/x-www-form-urlencoded" }, }); } 即可,没有网络上那么多复杂的转码设置。……
阅读全文
2021年1月7日
使用 zip4j 处理压缩文件 通常情况下使用 java 处理 zip 文件时,有 java.util.zip 包下类可以使用。 但这些包过于基础且难于使用。 zip4j 有简单易用的 api,几乎可以完美使用于各种 ZIP 相关操作的场景中。 常用的 zip 处理场景包括: 压缩: 将文件打包存储到 zip 文件 将文件打包到 zip 文件内的特定文件夹内 解压: 将指定 zip 内所有文件解压到指定的……
阅读全文
2021年1月6日
使用 Nginx Unit 部署 JavaWebApp 从源码构建和安装 NginxUnit 主要参考:http://unit.nginx.org/installation/#source-code # 下载源码 git clone https://github.com/nginx/unit cd unit # 配置路径前缀 ./configurate --prefix=/apps/unit # 配置 java 模块 ./configurate java # 生成应用并安装到 /apps/unit make && make install 启动和停止 NginxUnit cd /apps/unit # 查看命令行使用帮助 ./sbin/unitd --help # 使用命令行形式启动控……
阅读全文