国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

SpringBoot非官方教程 | 第十一篇:SpringBoot集成swagger2,構建優雅的R

荊兆峰 / 1248人閱讀

摘要:另外很容易構建風格的,簡單優雅帥氣,正如它的名字。配置一些基本的信息。三寫生產文檔的注解通過注解表明該接口會生成文檔,包括接口名請求方法參數返回信息的等等。四參考資料中使用構建強大的文檔

swagger,中文“拽”的意思。它是一個功能強大的api框架,它的集成非常簡單,不僅提供了在線文檔的查閱,而且還提供了在線文檔的測試。另外swagger很容易構建restful風格的api,簡單優雅帥氣,正如它的名字。

一、引入依賴
    
        io.springfox
        springfox-swagger2
        2.6.1
    

    
        io.springfox
        springfox-swagger-ui
        2.6.1
    
二、寫配置類
@Configuration
@EnableSwagger2
public class Swagger2 {

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.forezp.controller"))
                .paths(PathSelectors.any())
                .build();
    }
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("springboot利用swagger構建api文檔")
                .description("簡單優雅的restfun風格,http://blog.csdn.net/forezp")
                .termsOfServiceUrl("http://blog.csdn.net/forezp")
                .version("1.0")
                .build();
    }
}

通過@Configuration注解,表明它是一個配置類,@EnableSwagger2開啟swagger2。apiINfo()配置一些基本的信息。apis()指定掃描的包會生成文檔。

三、寫生產文檔的注解

swagger通過注解表明該接口會生成文檔,包括接口名、請求方法、參數、返回信息的等等。

@Api:修飾整個類,描述Controller的作用
@ApiOperation:描述一個類的一個方法,或者說一個接口
@ApiParam:單個參數描述
@ApiModel:用對象來接收參數
@ApiProperty:用對象接收參數時,描述對象的一個字段
@ApiResponse:HTTP響應其中1個描述
@ApiResponses:HTTP響應整體描述
@ApiIgnore:使用該注解忽略這個API
@ApiError :發生錯誤返回的信息
@ApiParamImplicitL:一個請求參數
@ApiParamsImplicit 多個請求參數

現在通過一個栗子來說明:

package com.forezp.controller;

import com.forezp.entity.Book;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;

import java.util.*;

/**
 * 用戶創建某本圖書 POST    /books/
 * 用戶修改對某本圖書    PUT /books/:id/
 * 用戶刪除對某本圖書    DELETE  /books/:id/
 * 用戶獲取所有的圖書 GET /books
 *  用戶獲取某一圖書  GET /Books/:id
 * Created by fangzhipeng on 2017/4/17.
 * 官方文檔:http://swagger.io/docs/specification/api-host-and-base-path/
 */
@RestController
@RequestMapping(value = "/books")
public class BookContrller {

    Map books = Collections.synchronizedMap(new HashMap());

    @ApiOperation(value="獲取圖書列表", notes="獲取圖書列表")
    @RequestMapping(value={""}, method= RequestMethod.GET)
    public List getBook() {
        List book = new ArrayList<>(books.values());
        return book;
    }

    @ApiOperation(value="創建圖書", notes="創建圖書")
    @ApiImplicitParam(name = "book", value = "圖書詳細實體", required = true, dataType = "Book")
    @RequestMapping(value="", method=RequestMethod.POST)
    public String postBook(@RequestBody Book book) {
        books.put(book.getId(), book);
        return "success";
    }
    @ApiOperation(value="獲圖書細信息", notes="根據url的id來獲取詳細信息")
    @ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "Long",paramType = "path")
    @RequestMapping(value="/{id}", method=RequestMethod.GET)
    public Book getBook(@PathVariable Long id) {
        return books.get(id);
    }

    @ApiOperation(value="更新信息", notes="根據url的id來指定更新圖書信息")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "圖書ID", required = true, dataType = "Long",paramType = "path"),
            @ApiImplicitParam(name = "book", value = "圖書實體book", required = true, dataType = "Book")
    })
    @RequestMapping(value="/{id}", method= RequestMethod.PUT)
    public String putUser(@PathVariable Long id, @RequestBody Book book) {
        Book book1 = books.get(id);
        book1.setName(book.getName());
        book1.setPrice(book.getPrice());
        books.put(id, book1);
        return "success";
    }
    @ApiOperation(value="刪除圖書", notes="根據url的id來指定刪除圖書")
    @ApiImplicitParam(name = "id", value = "圖書ID", required = true, dataType = "Long",paramType = "path")
    @RequestMapping(value="/{id}", method=RequestMethod.DELETE)
    public String deleteUser(@PathVariable Long id) {
        books.remove(id);
        return "success";
    }

    @ApiIgnore//使用該注解忽略這個API
    @RequestMapping(value = "/hi", method = RequestMethod.GET)
    public String  jsonTest() {
        return " hi you!";
    }
}

通過相關注解,就可以讓swagger2生成相應的文檔。如果你不需要某接口生成文檔,只需要在加@ApiIgnore注解即可。需要說明的是,如果請求參數在url上,@ApiImplicitParam 上加paramType = “path” 。

啟動工程,訪問:http://localhost:8080/swagger... ,就看到swagger-ui:

整個集成過程非常簡單,但是我看了相關的資料,swagger沒有做安全方面的防護,可能需要我們自己做相關的工作。

四、參考資料

swagger.io

Spring Boot中使用Swagger2構建強大的RESTful API文檔

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/70369.html

相關文章

  • 一起來學SpringBoot | 第十一篇集成Swagger在線調試

    摘要:但是這種手寫文檔帶來的弊端就是維護起來苦不堪言,對于接口容易發生變化的開發者來說,維護文檔就是噩夢好在現如今市場上書寫文檔的工具有很多,常見的有阿里的但是能稱之為框架的,估計也只有了。 SpringBoot 是為了簡化 Spring 應用的創建、運行、調試、部署等一系列問題而誕生的產物,自動裝配的特性讓我們可以更好的關注業務本身而不是外部的XML配置,我們只需遵循規范,引入相關的依賴...

    everfly 評論0 收藏0
  • SpringBoot 實戰 (五) | 集成 Swagger2 構建強大 RESTful API

    摘要:今天給你們帶來集成的教程。接口返回結果不明確。這些痛點在前后端分離的大型項目上顯得尤為煩躁。接口返回結果非常明確,包括數據類型,狀態碼,錯誤信息等。生成后的文件依賴如下這里使用的是的版本。另外,關注之后在發送可領取免費學習資料。 微信公眾號:一個優秀的廢人如有問題或建議,請后臺留言,我會盡力解決你的問題。 前言 快過年了,不知道你們啥時候放年假,忙不忙。反正我是挺閑的,所以有時間寫 b...

    Rindia 評論0 收藏0
  • SpringBoot官方教程 | 第二十一篇springboot集成JMS

    摘要:對提供了很好的支持,對其做了起步依賴。構架工程創建一個工程,在其文件加入添加配置在中填寫自己的郵箱密碼。啟用設置附件發送郵件郵件已發送測試已全部通過,沒有坑。 springboot對JMS提供了很好的支持,對其做了起步依賴。 構架工程 創建一個springboot工程,在其pom文件加入: org.springframework.boot spring-boot-st...

    roundstones 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<