swagger的配置和restful风格开发

一、springboot整合swagger2

1.1 引入依赖

 <!-- swagger2 接口文档 -->
<dependency>
	<groupId>io.springfox</groupId>
	<artifactId>springfox-swagger2</artifactId>
	<version>2.9.2</version>
</dependency>
 <!-- swagger2的页面 -->
 <dependency>
 	<groupId>com.github.xiaoymin</groupId>
 	<artifactId>swagger-bootstrap-ui</artifactId>
 	<version>1.9.6</version>
 </dependency>

 <!--书写配置文件提示的依赖-->
 <dependency>
 	<groupId>org.springframework.boot</groupId>
 	<artifactId>spring-boot-configuration-processor</artifactId>
	<optional>true</optional>
 </dependency>

1.2 创建一个配置属性类

使用了lombok。在使用时,安装lombok插件并导入lombok包

package com.zxm.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

@Data
@ConfigurationProperties(prefix = "swagger2")
public class SwaggerProperties {
    /**
     * 要对那个包的Controller 做文档的生成
     */
    private String basePackage;
    /**
     * 作者的名称
     */
    private String name ;
    /**
     * 主页
     */
    private String url;
    /**
     * 邮箱
     */
    private String email ;
    /**
     * 标题
     */
    private String title ;
    /**
     * 描述
     */
    private String description ;
    /**
     * 服务的团队
     */
    private String termsOfServiceUrl;
    /**
     * 授权信息
     */
    private String license ;
    /**
     * 授权的url
     */
    private String licenseUrl ;
    /**
     * swagger2的版本
     */
    private String version;
}

1.3 创建自动配置类

package com.zxm.config;

import io.swagger.models.Swagger;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.RequestHandler;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2  // 开启swagger的功能
@EnableConfigurationProperties(SwaggerProperties.class)
public class SwaggerAutoConfiguration {
    private SwaggerProperties swaggerProperties;
    public SwaggerAutoConfiguration(SwaggerProperties swaggerProperties){
        this.swaggerProperties = swaggerProperties;
    }

    @Bean
    public Docket docket(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(getApiInfo())
                .select().apis(RequestHandlerSelectors.basePackage(this.swaggerProperties.getBasePackage())).build();
    }

    private ApiInfo getApiInfo() {
        Contact contact = new Contact(this.swaggerProperties.getName(), this.swaggerProperties.getUrl(), this.swaggerProperties.getEmail());
        return new ApiInfoBuilder().
                contact(contact).
                title(this.swaggerProperties.getTitle()).
                description(this.swaggerProperties.getDescription()).
                termsOfServiceUrl(this.swaggerProperties.getTermsOfServiceUrl()).
                license(this.swaggerProperties.getLicense()).
                licenseUrl(this.swaggerProperties.getLicenseUrl()).
                version(this.swaggerProperties.getVersion()).
                build();
    }
}

1.4 在shiro里放行swagger2

若未使用权限拦截可以不进行设置
若使用权限拦截则进行放行swagger2的请求
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6lSPG6oa-1585211962853)(assets/1583077495400.png)]

1.5 配置个人信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qiy4XrMb-1585211962855)(assets/1583077322375.png)]

1.5 访问页面

http://localhost:8085/doc.html

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1xAjdlJA-1585211962856)(assets/1583077557021.png)]

1.6 swagger注解

可以参考博客:
https://blog.csdn.net/xiaojin21cen/article/details/78654652

二、mybatis-plus的分页配置

@Configuration
public class MybatisConfig {

    /**
     * 分页的拦截器
     * @return
     */
    @Bean
    public PaginationInterceptor paginationInterceptor(){
        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
        paginationInterceptor.setDialectType("mysql") ;
        return  paginationInterceptor ;
    }
}

三、Restful的接口设计

3.1 分页查询

请求参数最少两个:current page

SysUser —> sys/user/page

例:http://localhost:8001/proxyApi/sys/user/page?t=1582615122917&current=1&size=10

要素表现形式
请求方法get
请求参数Integer current:当前页 Integer page:每页显示的条数
返回值IPage
请求url${base_url}/表名称/page
表名称路径定义在类上面@RequestMapping("/sys/user")
@GetMapping("/page")
    public ResponseEntity<IPage<SysUser>> queryByPage(
            @RequestParam(defaultValue = "1") Integer current,
            @RequestParam(defaultValue = "10") Integer size,
            String username
){}

3.2 回显单个数据

要素表现形式
请求方法get
请求参数Long id(参数为url中的id )
返回值SysUser
请求url${base_url}/表名称/info/{id}
@GetMapping("/info/{id}")
public ResponseEntity<SysUser> getUser(@PathVariable("id") Long id) {
}

3.3删除一个数据

要素表现形式
请求方法delete
请求参数Long id(参数为url中的id )
返回值Void
请求url${base_url}/表的名称/{id}
@DeleteMapping("/{id}")
public ResponseEntity<Void> delete(@PathVariable("id") Long id) {
}

3.4 删除一个集合(批量删除)

要素表现形式
请求方法delete
请求参数List ids
返回值Void
请求url${base_url}/表名称
@DeleteMapping
public ResponseEntity<Void> delete(@RequestBody List<Long> ids) {
}

3.5 新增一个数据

要素表现形式
请求方法post
请求参数SysUser sysUser
返回值Void
请求url${base_url}/表名称
@PostMapping
public ResponseEntity<Void> addUser(@RequestBody @Valid SysUser sysUser) {
}

3.6 修改一个数据

要素表现形式
请求方法put
请求参数SysUser sysUser
返回值Void
请求url${base_url}/表名称
@PutMapping
public ResponseEntity<Void> modifyUser(@RequestBody @Valid SysUser sysUser) {
}

3.7 全查询数据

要素表现形式
请求方法get
请求参数
返回值List
请求url${base_url}/表的名称/list
@GetMapping("/list")
public ResponseEntity<List<User>> list(){
}

四、使用restful风格的例子

package com.sxt.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sxt.entity.SysUser;
import com.sxt.service.SysUserService;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/sys/user")
public class UserController {

    @Autowired
    private SysUserService sysUserService ;

    /**
     * 分页查询
     */
    @GetMapping("/page")
    @ApiOperation("分页的查询")
    public ResponseEntity<IPage<SysUser>> findByPage(
            @RequestParam(defaultValue = "1") Integer current,
            @RequestParam(defaultValue = "10") Integer size
    ){
        IPage<SysUser> page = sysUserService.page(new Page<>(current, size));
        return ResponseEntity.ok(page) ;
    }

    /**
     * 删除单个值
     * @param id
     * @return
     */
    @DeleteMapping("/{id}")
    @ApiOperation("删除单个值")
    public ResponseEntity<Void> delete(@PathVariable("id")Long id){
        sysUserService.removeById(id);
        return  ResponseEntity.ok().build() ;
    }

    /**
     * 删除多个值
     */
    @DeleteMapping
    @ApiOperation("删除多个值")
    public ResponseEntity<Void> delete(@RequestBody List<Long> ids){
        sysUserService.removeByIds(ids);
        return  ResponseEntity.ok().build() ;
    }

    /**
     * 回显一个值
     */
    @GetMapping("/info/{id}")
    @ApiOperation("回显一个值")
    public ResponseEntity<SysUser> findById(@PathVariable("id") Long id){
        SysUser sysUser = sysUserService.getById(id);
        return ResponseEntity.ok(sysUser) ;
    }

    /**
     * 新增一个值
     * @param sysUser
     * @return
     */
    @PostMapping
    @ApiOperation("新增一个值")
    public ResponseEntity<Void> add(@RequestBody SysUser sysUser){
        sysUserService.save(sysUser);
        return  ResponseEntity.ok().build() ;
    }

    /**
     * 修改一个值
     * @param sysUser
     * @return
     */
    @PutMapping
    @ApiOperation("修改一个值")
    public ResponseEntity<Void> update(@RequestBody SysUser sysUser){
        sysUserService.updateById(sysUser);
        return ResponseEntity.ok().build() ;
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值