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

dw软件使用教程seo基础培训教程

dw软件使用教程,seo基础培训教程,网站备案邮寄资料,网站移动端就是app吗优质博文:IT-BLOG-CN 如今,REST和微服务已经有了很大的发展势头。但是,REST规范中并没有提供一种规范来编写我们的对外REST接口API文档。每个人都在用自己的方式记录api文档,因此没有一种标准规范能够让我们很容易的理解和使用该…

优质博文:IT-BLOG-CN

如今,REST和微服务已经有了很大的发展势头。但是,REST规范中并没有提供一种规范来编写我们的对外REST接口API文档。每个人都在用自己的方式记录api文档,因此没有一种标准规范能够让我们很容易的理解和使用该接口。我们需要一个共同的规范和统一的工具来解决文档的难易理解文档的混乱格式。Swagger(在谷歌、IBM、微软等公司的支持下)做了一个公共的文档风格来填补上述问题。在本博客中,我们将会学习怎么使用SwaggerSwagger2注解去生成REST API文档。

Swagger(现在是“开放 API计划”)是一种规范和框架,它使用一种人人都能理解的通用语言来描述REST API。还有其他一些可用的框架,比如RAML、求和等等,但是 Swagger是最受欢迎的。它提供了人类可读和机器可读的文档格式。它提供了JSONUI支持。JSON可以用作机器可读的格式,而 Swagger-UI是用于可视化的,通过浏览api文档,人们很容易理解它。

一、添加 Swagger2 的 maven依赖

打开项目中的 pom.xml文件,添加以下两个 swagger依赖。springfox-swagger2 、springfox-swagger-ui。

<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.6.1</version>
</dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.6.1</version>
</dependency>

实际上,Swagger的 API有两种类型,并在不同的工件中维护。今天我们将使用 springfox,因为这个版本可以很好地适应任何基于 spring的配置。我们还可以很容易地尝试其他配置,这应该提供相同的功能——配置中没有任何变化。

二、添加 Swagger2配置

使用 Java config的方式添加配置。为了帮助你理解这个配置,我在代码中写了相关的注释:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import com.google.common.base.Predicates;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;@Configuration
@EnableSwagger2
public class Swagger2UiConfiguration extends WebMvcConfigurerAdapter
{@Beanpublic Docket api() {// @formatter:off//将控制器注册到 swagger//还配置了Swagger 容器return new Docket(DocumentationType.SWAGGER_2).select().apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.any())//扫描 controller所有包.apis(Predicates.not(RequestHandlerSelectors.basePackage("org.springframework.boot"))).paths(PathSelectors.any()).paths(PathSelectors.ant("/swagger2-demo")).build();// @formatter:on}@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry){//为可视化文档启用swagger ui部件registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");}
}

通过 api()方法返回 Docket,调用以下方法:
【1】apiInfo()方法中可以添加 api文档的基本信息(具体类型查看文档);
【2】select()方法返回 ApiSelectorBuilder实例,用于过滤哪些 api需要显示;
【3】apis()方法中填写项目中 Controller类存放的路径;

最后 build()建立 Docket。

三、验证 Swagger2的 JSON格式文档

在application.yml中配置服务名为:swagger2-demo

server.contextPath=/swagger2-demo

maven构建并启动服务器。打开链接,会生成一个JSON格式的文档。这并不是那么容易理解,实际上Swagger已经提供该文档在其他第三方工具中使用,例如当今流行的 API管理工具,它提供了API网关、API缓存、API文档等功能。

四、验证 Swagger2 UI文档

打开链接 在浏览器中来查看Swagger UI文档;

五、Swagger2 注解的使用

默认生成的 API文档很好,但是它们缺乏详细的 API级别信息。Swagger提供了一些注释,可以将这些详细信息添加到 api中。如。@Api我们可以添加这个注解在 Controller上,去添加一个基本的 Controller说明。

@Api(value = "Swagger2DemoRestController", description = "REST APIs related to Student Entity!!!!")
@RestController
public class Swagger2DemoRestController {//...
}

@ApiOperation and @ApiResponses我们添加这个注解到任何 Controller的 rest方法上来给方法添加基本的描述。例如:

@ApiOperation(value = "Get list of Students in the System ", response = Iterable.class, tags = "getStudents")
@ApiResponses(value = {@ApiResponse(code = 200, message = "Success|OK"),@ApiResponse(code = 401, message = "not authorized!"),@ApiResponse(code = 403, message = "forbidden!!!"),@ApiResponse(code = 404, message = "not found!!!") })@RequestMapping(value = "/getStudents")
public List<Student> getStudents() {return students;
}

在这里,我们可以向方法中添加标签,来在 swagger-ui中添加一些分组。@ApiModelProperty这个注解用来在数据模型对象中的属性上添加一些描述,会在 Swagger UI中展示模型的属性。例如:

@ApiModelProperty(notes = "Name of the Student",name="name",required=true,value="test name")
private String name;

Controller 和 Model 类添加了swagger2注解之后,代码清单:Swagger2DemoRestController.java

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.example.springbootswagger2.model.Student;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;@Api(value = "Swagger2DemoRestController", description = "REST Apis related to Student Entity!!!!")
@RestController
public class Swagger2DemoRestController {List<Student> students = new ArrayList<Student>();{students.add(new Student("Sajal", "IV", "India"));students.add(new Student("Lokesh", "V", "India"));students.add(new Student("Kajal", "III", "USA"));students.add(new Student("Sukesh", "VI", "USA"));}@ApiOperation(value = "Get list of Students in the System ", response = Iterable.class, tags = "getStudents")@ApiResponses(value = {@ApiResponse(code = 200, message = "Suceess|OK"),@ApiResponse(code = 401, message = "not authorized!"),@ApiResponse(code = 403, message = "forbidden!!!"),@ApiResponse(code = 404, message = "not found!!!") })@RequestMapping(value = "/getStudents")public List<Student> getStudents() {return students;}@ApiOperation(value = "Get specific Student in the System ", response = Student.class, tags = "getStudent")@RequestMapping(value = "/getStudent/{name}")public Student getStudent(@PathVariable(value = "name") String name) {return students.stream().filter(x -> x.getName().equalsIgnoreCase(name)).collect(Collectors.toList()).get(0);}@ApiOperation(value = "Get specific Student By Country in the System ", response = Student.class, tags = "getStudentByCountry")@RequestMapping(value = "/getStudentByCountry/{country}")public List<Student> getStudentByCountry(@PathVariable(value = "country") String country) {System.out.println("Searching Student in country : " + country);List<Student> studentsByCountry = students.stream().filter(x -> x.getCountry().equalsIgnoreCase(country)).collect(Collectors.toList());System.out.println(studentsByCountry);return studentsByCountry;}// @ApiOperation(value = "Get specific Student By Class in the System ",response = Student.class,tags="getStudentByClass")@RequestMapping(value = "/getStudentByClass/{cls}")public List<Student> getStudentByClass(@PathVariable(value = "cls") String cls) {return students.stream().filter(x -> x.getCls().equalsIgnoreCase(cls)).collect(Collectors.toList());}
}

Student.java 实体类

import io.swagger.annotations.ApiModelProperty;public class Student
{@ApiModelProperty(notes = "Name of the Student",name="name",required=true,value="test name")private String name;@ApiModelProperty(notes = "Class of the Student",name="cls",required=true,value="test class")private String cls;@ApiModelProperty(notes = "Country of the Student",name="country",required=true,value="test country")private String country;public Student(String name, String cls, String country) {super();this.name = name;this.cls = cls;this.country = country;}public String getName() {return name;}public String getCls() {return cls;}public String getCountry() {return country;}@Overridepublic String toString() {return "Student [name=" + name + ", cls=" + cls + ", country=" + country + "]";}
}

六、swagger-ui 展示

现在,当我们的 REST api得到适当的注释时,让我们看看最终的输出。打开http://localhost:8080/swagger2-demo/swagger-ui。在浏览器中查看 Swagger ui文档。

http://www.ds6.com.cn/news/44034.html

相关文章:

  • 深圳建站软件推广工具有哪些
  • 青岛做网站建设定制电商营销策划方案
  • 专门做电子书的网站淘宝店铺推广方式有哪些
  • 政府网站建设 论文新闻发布平台有哪些
  • 南京seo公司教程站长工具seo综合查询网
  • 网上做家教那个网站好西藏自治区seo 标题 关键词优化
  • 怎么在建设银行网站购买国债为什么打开网址都是站长工具
  • 电子商务网站建设的相关流程营销网站建设价格
  • 天河区住房和建设水务局官方网站快刷网站
  • 多商户wordpressaso优化公司
  • 调用wordpress分类名称seo短期课程
  • 广东专业网站建设公司郑州中原区最新消息
  • 3g电影网站排行榜线上推广的渠道和方法
  • 帝国cms做视频网站性能如何信阳seo
  • 幼儿园班级网站建设google关键词排名优化
  • 做垃圾网站 盈利绍兴seo
  • 网站建设 语言搜索大全浏览器
  • 创业初期要建立公司的网站吗seo如何优化关键词
  • 页面跳转 英文长沙seo报价
  • 网站建设网址网站制作松松软文
  • 天津哪里建网站好学校网站建设
  • 做网站 每月赚 钱免费b站推广网站入口2020
  • 廊坊做网站找谁seo外链技巧
  • 全屏网站是什么意思风云榜百度
  • 棋牌网站搭建公司互联网营销师培训课程
  • 微信网站是什么意思seo研究学院
  • 淮北公司做网站最近社会热点新闻事件
  • 江苏做网站的公司有哪些百度官网登录
  • 叫人做国外公司网站让老外做好还是国内人做好网络整合营销理论
  • 莒县网站制作百度一下你就知道了百度