项目中Swagger2、lombok(小辣椒)、以及短信API的调用 简单介绍

一、使用Swagger2实时生成接口文档(分布式系统使用)

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger 让部署管理和使用功能强大的API从未如此简单。

1.使用swagger生成实时接口文档

  https://swagger.io/

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的注解介绍

    1. @Api(tags="")
      1. 用在请求的类上,表示对类的说明
      2. tags"说明该类的作用,可以在UI界面上看到的注解"
    2. @ApiOperation(value="")
      1. 用在请求的方法上,说明方法的用途、作用
      2. value="说明方法的用途、作用"
    3. @ApiImplicitParams
      1. 用在请求的方法上,表示一组参数说明
      2. @ApiImplicitParam
        1. @ApiImplicitParam:指定一个请求参数的各个方面
        2. value:参数的汉字说明、解释
        3. required:参数是否必须传
        4. paramType:参数放在哪个地方
          1. header –> 请求头的获取:@RequestHeader
          2. query –> 请求参数的获取:@RequestParam
          3. path(用于restful接口)–> 请求路径变量的获取:@PathVariable
          4. body(不常用)
          5. form(不常用)
        5. dataType:参数类型,默认String,其它值dataType="Integer"
        6. defaultValue:参数的默认值
    4. @ApiResponses
      1. 用在请求的方法上,表示一组响应
      2. @ApiResponse
        1. 用在@ApiResponses中,一般用于表达一个错误的响应信息
        2. code:数字,例如400
        3. message:信息,例如"请求参数没填好"
        4. response:抛出异常的类
    5. @ApiModel
      1. 主要有两种用途:
      2. 用于响应类上,表示一个返回响应数据的信息
      3. 入参实体:使用@RequestBody这样的场景, 请求参数无法使用@ApiImplicitParam注解进行描述的时候
      4. @ApiModelProperty
        1. 用在属性上,描述响应类的属性

 

二、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.使用注解

  1. https://www.projectlombok.org/
  2. @Data:提供getter/setter
  3. @NoArgsConstructor, 无参构造器 @RequiredArgsConstructor   @AllArgsConstructor  全参数构造器
  4. @EqualsAndHashCode:提供equals和hashCode方法
  5. @Log:快速的使用slf4j日志
  6. @Log4j:快速使用log4j日志
  7. @Log4j2:快速使用log4j2
  8. @Getter/@Setter
  9. @Slf4j 内置log对象,直接调用日志方法输出日志
  10. @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();
        }
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值