当前位置: 首页 > news >正文

站酷设计网站官网入口插画设计做网站赚钱吗 怎么赚钱

站酷设计网站官网入口插画设计,做网站赚钱吗 怎么赚钱,wordpress提取公众号文章,营销机构代码查询Swagger 课程目标 Swagger简介【了解】 Springboot整合swagger【掌握】 Swagger 常用注解【掌握】 knife4j-Swagger【会用】 一、Swagger3简介 Swagger 是一系列 RESTful API 的工具,通过 Swagger 可以获得项目的⼀种交互式文档,客户端 SDK 的自 动…

Swagger

课程目标

Swagger简介【了解】

Springboot整合swagger【掌握】

Swagger 常用注解【掌握】

knife4j-Swagger【会用】

一、Swagger3简介

	Swagger 是一系列 RESTful API 的工具,通过 Swagger 可以获得项目的⼀种交互式文档,客户端 SDK 的自 动生成等功能。Swagger 的目标是为 REST APIs  定义一个标准的、与语⾔言无关的接口,使人和计算机在看不到源码或者看不到文档或者不能通过网络流量检测的情况下,能发现和理解各种服务的功能。当服务通过 Swagger 定义,消费者就能与远程的服务互动通过少量的实现逻辑。Swagger(丝袜哥)是世界上最流行的 API 表达工具。

OpenAPI阶段的Swagger也被称为Swagger 3.0。在Swagger 2.0后,Swagger规范正式更名为OpenAPI规范,并且根据OpenAPI规范的版本号进行了更新。因此,Swagger 3.0对应的就是OpenAPI 3.0版本,它是Swagger在OpenAPI阶段推出的一个重要版本。与前几个版本相比,Swagger 3.0更加强调对RESTful API的支持和规范化,提供了更丰富和灵活的定义方式,并且可以用于自动生成文档、客户端代码、服务器代码和测试工具等。

二、Springboot整合swagger3

	使用 Spring Boot 集成 Swagger 的理念是,使用用注解来标记出需要在 API 文档中展示的信息,Swagger  会根据项目中标记的注解来生成对应的 API 文档。Swagger 被号称世界上最流行的 API 工具,它提供了 API  管理的全套解决方案,API 文档管理需要考虑的因素基本都包含,这里将讲解最常用的定制内容。
  • 添加依赖


    org.springdoc
    springdoc-openapi-starter-webmvc-ui
    2.6.0


    org.springdoc
    springdoc-openapi-starter-webmvc-api
    2.6.0

  • 创建 SwaggerConfig 配置类
    /**
    * swagger3配置类
    */
    @Configuration
    public class SwaggerConfig {

        @Beanpublic OpenAPI openAPI(){return new OpenAPI().info(this.getInfo());}public Info getInfo(){return new Info().title("Springboot集成Swagger3") //标题.description("Springboot集成Swagger3接口说明") //项目描述.contact(new Contact().name("蜗牛学院")) //作者.version("V1.0"); //版本号}
    }
    
  • 访问swagger
    启动项目后输入:http://localhost:8080/swagger-ui/index.html 可看到swagger页面
    如果在访问 /swagger-ui/index.html 时出现 404 。这是因为,当你访问 .html 等静态资源时,Spring MVC 默认是在你自己项目的 resources/static 目录下去找它们,如果没有,自然就是 404 。而 swagger 相关的 .html 等静态资源是在依赖包含的 swagger-ui 项目(jar包) 下。所以,你需要通过静态资源配置来『告诉』Spring MVC 当收到 swagger 相关的静态资源访问时,去对应的这个目录下找它们。
    /**
    * spring mvc配置类
    */
    @Configuration //项目启动时加载此类
    public class WebMvcConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler(“/swagger-ui/**”)
    .addResourceLocations(“classpath:/META-INF/resources/webjars/springfox-swagger-ui/”);
    }
    }

  • 配置访问路径
    swagger的访问路径可以自己更改

    • 默认路径
      springdoc:
      api-docs:
      path: /v3/api-docs
      swagger-ui:
      path: /swagger-ui.html #可以改成自己喜欢的路径,如/doc.html

三、knife4j-Swagger

knife4j 是 Swagger 生成 API 文档的增强解决方案,最主要是 knife4j 提供了动态字段注释功能实现 Map 来接收参数这个的接口文档生成,忽略参数属性来实现同一个实体类对不同接口生成不同的文档
  • 添加依赖
    前面swagger3的依赖不需要了


    com.github.xiaoymin
    knife4j-openapi3-jakarta-spring-boot-starter
    4.3.0

  • 创建配置类
    /**
    * swagger3配置类
    */
    @Configuration
    public class SwaggerConfig {
    @Bean
    public OpenAPI openAPI(){
    return new OpenAPI().info(this.getInfo());
    }

        public Info getInfo(){return new Info().title("Springboot集成Swagger3") //标题.description("Springboot集成Swagger3接口说明") //项目描述.contact(new Contact().name("蜗牛学院")) //作者.version("V1.0"); //版本号}
    }
    

    启动项目后通过:http://127.0.0.1:8080/doc.html 访问knife4j页面

四、Swagger3 常用注解

Swagger 通过注解表明该接口会生成文档,包括接口名、请求方法、参数、返回信息等。

1、@Tag

作用于类上,一般用来对controller类进行说明

语法:  @Tag(name = "用户接口", description = "用户管理相关接口")示例 :
@RestController
@Tag(name="用户操作")
public class UserController {}

2、@Operation

作用于Controller的方法上。用于对controller方法进行说明

语法:
@Operation(summary = "操作摘要",description = "操作的详细描述",operationId = "operationId",tags = "tag1",parameters = {@Parameter(name = "param1", description = "参数1", required = true),@Parameter(name = "param2", description = "参数2", required = false)})示例 :@GetMapping("/user/list")@Operation(summary = "用户列表")public List<User> userList(){return userService.finUser();}

参数说明:

  • summary:简短描述
  • description :更详细的描述
  • hidden:是否隐藏
  • tags:标签,用于分组API
  • operationId:操作的唯一标识符,建议使用唯一且具有描述性的名称
  • parameters:指定相关的请求参数,使用 @Parameter 注解来定义参数的详细属性。
  • requestBody:指定请求的内容,使用 @RequestBody 注解來指定请求的类型。
  • responses:指定操作的返回内容,使用 @ApiResponse 注解定义返回值的详细属性。

3、@Parameters

作用于Controller的方法上。@Parameters注解中包含多个 @Parameter 注解,通过@Parameter注解对controller方法中的非对象类型形参进行说明

语法:
@Parameters({@Parameter(name = "param1",description = "description",required = true,in = ParameterIn.PATH,schema = @Schema(type = "string")),@Parameter(name = "param2",description = "description",required = true,in = ParameterIn.QUERY,schema = @Schema(type = "integer"))
})示例:@GetMapping("/user/query")@Operation(summary = "根据条件查询用户")@Parameters({@Parameter(name="username",in= ParameterIn.QUERY,description = "用户名",required = true,schema = @Schema(type ="String")),@Parameter(name="age",in= ParameterIn.QUERY,description = "年龄",required = true,schema = @Schema(type ="Integer"))})public List<User> queryUser(@RequestParam(value = "username",required = true,defaultValue = "") String username,@RequestParam(value = "age",required = true,defaultValue = "0") Integer age){return userService.finUser();}

@Parameter参数说明:

  • name : 指定的参数名
  • in:参数来源,可选 query、header、path 或 cookie,默认为空,表示忽略
  • ParameterIn.QUERY 请求参数
  • ParameterIn.PATH 路径参数
  • ParameterIn.HEADER header参数
  • ParameterIn.COOKIE cookie 参数
  • description:参数描述
  • required:是否必填,默认为 false
  • schema :参数的数据类型。如 schema = @Schema(type = “string”)

4、@ApiResponses

作用于Controller的方法上。@ApiResponses包含多个@ApiResponse。通过@ApiResponse对controller方法的返回值进行说明

语法:
@ApiResponse(responseCode = "200", description = "查询成功", 
content = @Content(schema = @Schema(implementation = User.class)))
@ApiResponse(responseCode = "404", description = "查询失败")示例:@GetMapping("/user/query")@Operation(summary = "根据条件查询用户")@ApiResponses({@ApiResponse(responseCode = "2000",description = "多条件查询成功",content = @Content(schema = @Schema(implementation = List.class))),@ApiResponse(responseCode = "5000",description = "多条件查询失败成功")})public ResponseResult<List<User>> queryUser(){return new ResponseResult<>(2000,"OK",null);}

@ApiResponse参数说明:

  • responseCode:响应的 HTTP 状态码
  • description:响应信息的描述
  • content:响应的内容

5、@Schema

用于FO的类上。用于对controller中对象参数对应的FO对象的属性进行说明

  • vo实体类
    @Data
    @Tag(name = “用户Vo”, description = “接收用户信息实体类”)
    public class UserVo implements Serializable {
    private static final long serialVersionUID = 1L;
    @Schema(name = “id”, type = “Integer”,description = “用户id”,defaultValue =“0”)
    private Integer id;
    @Schema(name = “username”, type = “String”,description = “用户真实姓名”,defaultValue = “”)
    private String username;
    @Schema(name = “birthday”, type = “LocalDateTime”,description = “生日”,defaultValue = “”)
    private LocalDateTime birthday;
    @Schema(name = “sex”, type = “String”,description = “性别”,defaultValue = “男”)
    private String sex;
    }
    参数说明:
    name:名称
    title:标题
    description:描述
    example:示例值
    required:是否为必须
    format:属性的格式。如 @Schema(format = “email”)
    maxLength 、 minLength:指定字符串属性的最大长度和最小长度
    maximum 、 minimum:指定数值属性的最大值和最小值
    pattern:指定属性的正则表达式模式
    type: 数据类型(integer,long,float,double,string,byte,binary,boolean,date,dateTime,password),必须是字符串。如 @Schema=(type=“integer”)
    implementation :具体的实现类,可以是类本身,也可以是父类或实现的接口。
  • controller
    @PostMapping(“/user/add”)
    @Operation(summary = “添加用户”)
    public ResponseResult<List> addUser(@RequestBody UserFo userFo){
    return new ResponseResult<>(2000,“OK”,null);
    }

五、spring security放行swagger3

修改security配置类

 /*** spring security过滤器链配配置* @param http* @return* @throws Exception*/@Beanpublic SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception{//鉴权配置http.authorizeHttpRequests(authorizeHttpRequests->authorizeHttpRequests//允许所有的OPTIONS请求.requestMatchers(HttpMethod.OPTIONS,"/**").permitAll()//放行swagger3.requestMatchers(HttpMethod.GET,"/v3/api-docs/**","/doc.html","/webjars/**").permitAll().anyRequest().authenticated());//认证配置http.formLogin().successHandler(simpleAuthenticationSuccessHandler) //认证成功后的处理器.failureHandler(simpleAuthenticationFailureHandler) //认证失败后的处理器.permitAll();//这句配置很重要,新手容易忘记。放开 login.html和dologin 的访问权//退出操作配置http.logout().logoutSuccessHandler(simpLogoutSuccessHandler);//将自定义的jwtFilter添加到Spring Security过滤器链的倒数第二个以前http.addFilterAfter(jwtFilter, UsernamePasswordAuthenticationFilter.class);//认证和鉴权异常配置http.exceptionHandling().authenticationEntryPoint(simpleAuthenticationEntryPoint) //认证异常处理器.accessDeniedHandler(simpleAccessDeniedHandler); //鉴权异常处理器//前后端项目中要禁用掉sessionhttp.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);//关闭crsf 跨域漏洞防御http.csrf(csrf-> csrf.disable());return http.build();}
http://www.yayakq.cn/news/14794/

相关文章:

  • 淘宝网站网页图片怎么做个人+网站可以做导航吗
  • 高级网站开发培训价格阳江网上问政平台
  • 规模以上工业企业划分标准sem和seo哪个工作好
  • 设计logo免费网站云南做网站的公司有哪些
  • 贵阳市住房城乡建设局八大员网站dw免费网站模板
  • 网站有了如何做推广网络营销的整体概念
  • 网站后台管理密码忘了查找域名
  • 自动打开多个同网站网页陕西住房与建设厅网站
  • 网站开发 确认函深圳好的外贸网站建设
  • 大良网站建设基本流程直播网站开发秀色
  • 公司注册网站及流程长沙seo公司
  • 常州网站建设运营精仿手表网站
  • 农业电商网站建设方案asp.net 知名网站
  • 成武建设局网站软文推广新闻发布
  • 网站里添加图片超链接怎么做商品网站开发
  • flashfxp 上传网站抢注域名网站
  • 台江网站建设360免费建站域名
  • 网站开发 需求文档微信公众号怎么做微网站
  • 网站备案帐号是什么情况昆明网红打卡地有哪些地方
  • 优秀网站欣赏做外贸方面的网站
  • 泰安北京网站建设天河建设网站系统
  • 手机网站判断跳转网页设计图片是怎么显示的
  • 名聚优品一家只做正品的网站电脑网站转换手机网站怎么做
  • 免费舆情网站下载大全最新版成都网站制作028net
  • 株洲建设工程造价信息网站中国计算机技术职业资格网
  • 海沧做网站南京江宁区住房建设局网站
  • 做暧暖免费观看网站蓝领网站做的最好
  • 提供网站设计方案公司wordpress squarespace
  • 销售型企业网站有哪些单片机培训
  • 襄阳定制型网站开发网站收录服务