一、使用Swagger2实时生成接口文档(分布式系统使用)
Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger 让部署管理和使用功能强大的API从未如此简单。
1.使用swagger生成实时接口文档
2.引入Swagger2和swagger ui (在父工程中依赖)
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency> |
3.编写配置类(@EnableSwagger2 开启swagger2自动生成api文档功能)
package com.atguigu.user.config;
import org.springframework.context.annotation.Configuration; import springfox.documentation.swagger2.annotations.EnableSwagger2;
@EnableSwagger2 //开启swagger2自动生成api文档的功能 @Configuration public class AppSwaggerConfig {
} |
4.访问swagger-ui
http://localhost:8080/swagger-ui.html
可以生成文档,可以直接进行服务接口调用测试。
package com.atguigu.scw.user.controller;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController;
@RestController public class HelloController {
@GetMapping("/hello") public String hello(String name) { return "OK:"+name; } } |
swagger的注解介绍
-
- @Api(tags="")
- 用在请求的类上,表示对类的说明
- tags"说明该类的作用,可以在UI界面上看到的注解"
- @ApiOperation(value="")
- 用在请求的方法上,说明方法的用途、作用
- value="说明方法的用途、作用"
- @ApiImplicitParams
- 用在请求的方法上,表示一组参数说明
- @ApiImplicitParam
- @ApiImplicitParam:指定一个请求参数的各个方面
- value:参数的汉字说明、解释
- required:参数是否必须传
- paramType:参数放在哪个地方
- header –> 请求头的获取:@RequestHeader
- query –> 请求参数的获取:@RequestParam
- path(用于restful接口)–> 请求路径变量的获取:@PathVariable
- body(不常用)
- form(不常用)
- dataType:参数类型,默认String,其它值dataType="Integer"
- defaultValue:参数的默认值
- @ApiResponses
- 用在请求的方法上,表示一组响应
- @ApiResponse
- 用在@ApiResponses中,一般用于表达一个错误的响应信息
- code:数字,例如400
- message:信息,例如"请求参数没填好"
- response:抛出异常的类
- @ApiModel
- 主要有两种用途:
- 用于响应类上,表示一个返回响应数据的信息
- 入参实体:使用@RequestBody这样的场景, 请求参数无法使用@ApiImplicitParam注解进行描述的时候
- @ApiModelProperty
- 用在属性上,描述响应类的属性
- @Api(tags="")
二、lombok
lombok基于字节码,可以使我们不用繁琐的进行entity,vo层的开发,利用注解就可以生成toString,get/set方法。
1、common项目中引入lombok(简化javaBean开发)
不用指定版本,SpringBoot底层也引入lombok包,1.16.22
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <!-- <version>1.18.6</version>--> <!—SpringBoot框架引用版本就是1.18.8--> <scope>provided</scope> </dependency> |
2.在IDEA集成lombok插件
3.使用注解
- https://www.projectlombok.org/
- @Data:提供getter/setter
- @NoArgsConstructor, 无参构造器 @RequiredArgsConstructor @AllArgsConstructor 全参数构造器
- @EqualsAndHashCode:提供equals和hashCode方法
- @Log:快速的使用slf4j日志
- @Log4j:快速使用log4j日志
- @Log4j2:快速使用log4j2
- @Getter/@Setter
- @Slf4j 内置log对象,直接调用日志方法输出日志
- @ToString
三、使用短信API服务
现在很多网站都使用手机验证码登陆,如何实现的呢?联系电信移动联通运营商?显然不现实,我们可以使用第三方中介来使用这种服务。
发短信的接口?第三方公司把这个功能写成REST API,让公众调用
1.购买短信API
在项目中以发送请求的方式来进行短信api 的调用
2.在阿里云中搜索“短信”,可以找到一堆提供短信服务的第三方公司
3.通过【去调试】进行测试
只需要填写手机号码即可
4.通过postman工具,自己发送请求。
要在请求头中附加我们的认证信息,即购买完短信服务后的AppCode
请求头:Authrization 值为(APPCODE 自己的APPCODE) 注意中间要有空格
在请求体信息中写入手机、验证码、消息模板
5.使用java代码进行测试
1)引入httputil的依赖,将HttpUtil工具类引入到工作空间
2)见示例代码
package com.xijian;
import org.apache.http.HttpResponse;
import java.util.HashMap;
import java.util.Map;
public class SmsTest {
public static void main(String[] args) {
String host = "http://dingxin.market.alicloudapi.com";
String path = "/dx/sendSms";
String method = "POST";
String appcode = "62c2ebd07c7c4a95b270feff6c896c6c";
Map<String, String> headers = new HashMap<String, String>();
// 最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105
headers.put("Authorization", "APPCODE " + appcode);
Map<String, String> querys = new HashMap<String, String>();
querys.put("mobile", "18610025821");
querys.put("param", "code:9966");
querys.put("tpl_id", "TP1711063");
Map<String, String> bodys = new HashMap<String, String>();
try {
/**
* 重要提示如下: HttpUtils请从
* https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/src/main/java/com/aliyun/api/gateway/demo/util/HttpUtils.java
* 下载
*
* 相应的依赖请参照
* https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/pom.xml
*/
HttpResponse response = HttpUtils.doPost(host, path, method,
headers, querys, bodys);
System.out.println(response.toString());
// 获取response的body
// System.out.println(EntityUtils.toString(response.getEntity()));
//{"return_code":"00000","order_id":"ALY1549881237643456814"}
} catch (Exception e) {
e.printStackTrace();
}
}
}