1. 程式人生 > >Spring MVC中使用 Swagger2 構建Restful API

Spring MVC中使用 Swagger2 構建Restful API

0.Spring MVC配置檔案中的配置

<!-- 設定使用註解的類所在的jar包,只加載controller類 -->
<span style="white-space:pre">	</span><context:component-scan base-package="com.jay.plat.config.controller" /> 
<!-- 使用 Swagger Restful API文件時,新增此註解 -->
	<mvc:default-servlet-handler />


1.maven依賴

<!-- 構建Restful API -->
		
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger2</artifactId>
			<version>2.4.0</version>
		</dependency>
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger-ui</artifactId>
			<version>2.4.0</version>
		</dependency>


2.Swagger配置檔案

package com.jay.plat.config.util;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;


import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/*
 * Restful API 訪問路徑:
 * http://IP:port/{context-path}/swagger-ui.html
 * eg:http://localhost:8080/jd-config-web/swagger-ui.html
 */
@EnableWebMvc
@EnableSwagger2
@ComponentScan(basePackages = {"com.<span style="font-family:Arial, Helvetica, sans-serif;">jay.</span>plat.config.controller"})
@Configuration
public class RestApiConfig extends WebMvcConfigurationSupport{

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.jay.plat.config.controller"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("Spring 中使用Swagger2構建RESTful APIs")
                .termsOfServiceUrl("http://blog.csdn.net/he90227")
                .contact("逍遙飛鶴")
                .version("1.1")
                .build();
    }
}


配置說明:

@Configuration 配置註解,自動在本類上下文載入一些環境變數資訊
@EnableWebMvc 
@EnableSwagger2 使swagger2生效
@ComponentScan("com.myapp.packages") 需要掃描的包路徑

3.Controller中使用註解新增API文件

package com.jay.spring.boot.demo10.swagger2.controller;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import com.jay.spring.boot.demo10.swagger2.bean.User;

import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;

@RestController
@RequestMapping(value = "/users") // 通過這裡配置使下面的對映都在/users下,可去除
public class UserController {

	static Map<Long, User> users = Collections.synchronizedMap(new HashMap<Long, User>());

	@ApiOperation(value = "獲取使用者列表", notes = "")
	@RequestMapping(value = { "" }, method = RequestMethod.GET)
	public List<User> getUserList() {
		List<User> r = new ArrayList<User>(users.values());
		return r;
	}

	@ApiOperation(value = "建立使用者", notes = "根據User物件建立使用者")
	@ApiImplicitParam(name = "user", value = "使用者詳細實體user", required = true, dataType = "User")
	@RequestMapping(value = "", method = RequestMethod.POST)
	public String postUser(@RequestBody User user) {
		users.put(user.getId(), user);
		return "success";
	}

	@ApiOperation(value = "獲取使用者詳細資訊", notes = "根據url的id來獲取使用者詳細資訊")
	@ApiImplicitParam(name = "id", value = "使用者ID", required = true, dataType = "Long")
	@RequestMapping(value = "/{id}", method = RequestMethod.GET)
	public User getUser(@PathVariable Long id) {
		return users.get(id);
	}

	@ApiOperation(value = "更新使用者詳細資訊", notes = "根據url的id來指定更新物件,並根據傳過來的user資訊來更新使用者詳細資訊")
	@ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "使用者ID", required = true, dataType = "Long"),
			@ApiImplicitParam(name = "user", value = "使用者詳細實體user", required = true, dataType = "User") })
	@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
	public String putUser(@PathVariable Long id, @RequestBody User user) {
		User u = users.get(id);
		u.setName(user.getName());
		u.setAge(user.getAge());
		users.put(id, u);
		return "success";
	}

	@ApiOperation(value = "刪除使用者", notes = "根據url的id來指定刪除物件")
	@ApiImplicitParam(name = "id", value = "使用者ID", required = true, dataType = "Long")
	@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
	public String deleteUser(@PathVariable Long id) {
		users.remove(id);
		return "success";
	}

}


4.效果展示

訪問路徑:
Restful API 訪問路徑:
 * http://IP:port/{context-path}/swagger-ui.html
 * eg:http://localhost:8080/jd-config-web/swagger-ui.html

參考: http://www.cnblogs.com/yuananyun/p/4993426.html
http://www.jianshu.com/p/8033ef83a8ed

相關推薦

第六篇:Spring Boot整合Swagger2構建RESTful API文件

由於Spring Boot有快速開發、便捷部署等特性,所以很大一部分Spring Boot的使用者會用來構建RESTfulAPI。而我們構建RESTfulAPI的目的通常都是由於多終端的原因,這些終端會共用很多底層業務邏輯,因此我們會抽象出這樣一層來同時服務於多個移動端或者Web前端。

Spring boot 使用Swagger2構建RESTful API文件

前言 SwaggerUI可以說是一個非常好用的API文件工具,是前後端分離開發模式下的必備工具、具體實現及部分乾貨知識如下 匯入依賴 <!-- RESTful APIs swagger2 --> <dependency> <

Spring MVC使用 Swagger2 構建Restful API

0.Spring MVC配置檔案中的配置 <!-- 設定使用註解的類所在的jar包,只加載controller類 --> <span style="white-space:pre"> </span><context:compone

dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb3.4-redis3(十)之Spring MVC使用 Swagger2 構建Restful API

1、Swagger2是什麼? Swagger 是一款RESTFUL介面的文件線上自動生成+功能測試功能軟體。 Swagger 是一個規範和完整的框架,用於生成、描述、呼叫和視覺化 RESTful 風格的 Web 服務。總體目標是使客戶端和檔案系統作為伺服器以

Spring Boot 使用 Swagger2 構建 RESTFUL API 文件

由於Spring Boot能夠快速開發、便捷部署等特性,相信有很大一部分Spring Boot的使用者會用來構建RESTful API。而我們構建RESTful API的目的通常都是由於多終端的原因,這些終端會共用很多底層業務邏輯,因此我們會抽象出這樣一層來同時服務於多個移動端或者Web前端。

Spring Boot 使用Swagger2構建RESTful風格的API線上文件 & 專案總結

之前做的專案中前後端完全分離,前端為嵌在手機app中的H5,後端需求限定了語言為Java,而且所給的時間非常少。 於是能夠快速搭建配置部署的Spring Boot專案就成了不二之選,加上Swagger2能夠方便的幫助我們構建出功能強大的線上介面文件,方便測試人

使用spring mvc或者resteasy構建restful服務

很好 trap 如何 系統 路徑 查找 factor 執行 閱讀 看到最近一個項目裏用resteasy來構建restful接口,有點不明白,不少Spring mvc4.0以後也可以很方面的實現restful服務嗎,為啥還要在Spring MVC的項目裏還引入resteasy

企業分布式微服務雲SpringCloud SpringBoot mybatis (二十五)集成swagger2構建Restful API

sel ima eth syn conf ring 但是 batis 關註 一、引入依賴 <dependency> <groupId>io.springfox</groupId> <

Spring MVC使用Swagger生成API文件和完整專案示例Demo,swagger

轉載自:http://www.360doc.com/content/17/0914/17/16915_687184334.shtml    實際專案中非常需要寫文件,提高Java服務端和Web前端以及移動端的對接效率。   聽說Swagger這

整合swagger2構建Restful API

整合swagger2構建Restful API 在pom.xml中進行版本管理 <swagger.version>2.8.0</swagger.version> 給taosir-api的pom.xml中新增依賴配置 <!-- swagger start -

Spring MVC使用Swagger生成API文件和完整專案示例Demo,swagger-server-api

package cn.fansunion.swagger.serverapi.controller; import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; import org

[springboot::]整合swagger2,構建RESTful api

1.本來以為會很容易整合的,結果一直報404,試了好久,心累…最後終於找到解決辦法 http://localhost:8080/swagger-ui.html 訪問不到,原因是,是因為 MVC 沒有找到 swagger-ui 包中的 swagger-ui.html 檔案; 但是這個檔案在ja

Springboot 學習筆記 之 Day 5 如何加密,以及用Swagger2構建Restful API

  先看一下使用Swagger2構建Restful API效果圖       超級簡單的,只需要在pom 中引用如下jar包   <dependency> <groupId>io.springfox</group

SpringBoot+Swagger2構建 RESTful API文件報org.thymeleaf.exceptions.TemplateInputException的錯誤

在是使用Swagger2構建RESTful API時,報TemplateInputException錯誤: org.thymeleaf.exceptions.TemplateInputException: Error resolving template "user/getById/1", t

SpringBoot整合springfox-swagger2構建restful API

上面文章SpringMVC整合springfox-swagger2構建restful API簡單寫了如何在springmvc中整合swagger2。這邊記錄下在springboot中如何整合swagger2。其實使用基本相同。 首先還是引用相關jar包。我使用

spring cloud-整合Swagger2構建RESTful服務的APIs

前言 在前面的部落格中,我們將服務註冊到了Eureka上,可以從Eureka的UI介面中,看到有哪些服務已經註冊到了Eureka Server上,但是,如果我們想檢視當前服務提供了哪些RESTful介面方法的話,就無從獲取了,傳統的方法是梳理一篇服務的介面文件來供開發人員之

【實踐筆記】Spring MVCRestful API使用 Swagger2 構建

1、Swagger2是什麼? Swagger 是一款RESTFUL介面的文件線上自動生成+功能測試功能軟體。 Swagger 是一個規範和完整的框架,用於生成、描述、呼叫和視覺化 RESTful 風格的 Web 服務。總體目標是使客戶端和檔案系統作為伺服器以同樣的速度來更新。檔案的方法,引數和模型緊密

Spring Boot使用Swagger2構建RESTful APIs

end err sdk yaml ack tex 社區 控制器 prope 關於 Swagger Swagger能成為最受歡迎的REST APIs文檔生成工具之一,有以下幾個原因: Swagger 可以生成一個具有互動性的API控制臺,開發者可以用來快速學習和嘗試A

Spring Boot構建RESTful API與單元測試實戰

一 點睛 1 相關注解 @Controller:修飾class,用來建立處理http請求的物件 @RestController:Spring4之後加入的註解,原來在@Controller中返回json需要@ResponseBody來配合,如果直接用@

Spring Boot 入門篇 (二) Spring Boot構建RESTful API與單元測試

http://blog.didispace.com/springbootrestfulapi/ 首先,回顧並詳細說明一下在快速入門中使用的@Controller、@RestController、@RequestMapping註解。如果您對Spring MVC不熟悉並且還沒有嘗試過快速入門案例,建