優雅なapiインタフェースドキュメントの作成方法
前言
今日は前に書いたインタフェースをドキュメントに整理する必要があります.ボスはswaggerで意見を出しました.私は新大陸を発見したように興奮して、待ちきれずにそれを「占有」しました.
Swaggerの紹介
毎回getの新しい技能を分かち合いたい时、やり方によって言えば、1つのブロックがこの技能の“前世今生”を绍介する必要がありますが、私は30分を超えない配置を完成するまで接触して、私に完璧な绍介をさせるのは少し虚しいと思います.http://swagger.io/ http://swagger.io/irc/これはリアルタイムチャットルームで、外国人と「how are you?fine thk you.and you?」とコミュニケーションしたばかりです.https://github.com/swagger-api/swagger-core/wiki/Annotations#apimodelこれはいくつかの注釈のapi Swaggerは3つのモジュールがあります Swagger Editor Swagger UI Swagger Codegen Swagger UIを使用しています.個人的には「Swagger関連の注釈を使用してサービスを開始すると、対応するページでAPIを表示してテストすることができます」と理解しています.まず、最終的なインタフェースの説明、パラメータのタイプ、戻り例のオンラインデバッグを見てみましょう.まだ何をためらっているのか、早くcheckouコードをチェックして、やってみましょう 統合
私は前のコードの書き込み(私のGitHubで閲覧したり、直接cloneをローカルにしてapi-normsブランチに切り替えたりすることができます)、ここではSpringbootを使ってSwagger泥棒JBを統合するのは簡単で、比較的SpringMVCは複雑です.ここはともかく(これからは話さないかもしれませんが、Springbootを使ってから、SpringMVCを捨て始めました)
maven依存
古いしきたりで配置する
Applicationに直接
はい、次はインタフェースの注釈を説明します!Controllerレイヤでは、次のように構成します.
私はただ元の基礎の上で下の注釈を追加しました
名前
説明する
@Api()
クラスをSwaggerリソースとしてマークします.
@ApiOperation()
特定のパスに対する動作または通常httpメソッドについて説明する.
@ApiImplicitParams
複数のApiImplicitParamオブジェクトリストのパッケージを許可します.
@ApiImplicitParam
api操作の単一パラメータを表します.
@ApiResponses
複数のApiResponseオブジェクトリストのパッケージを許可します.
@ApiResponse
操作の可能な応答を説明します.
もっとここを見て
このように簡単で、基本的で強力なAPIドキュメントが整理されました!
開始
SpringBootを正常に起動すると、コンソールから出力されていることがわかります.
Swaggerが正常に走り出したことを説明して、次にブラウザを開けて、あなたのリンクyourdomain/swagger-uiを入力します.私のはhttp://localhost:8080/swagger-ui.html
インタフェースを見て点々とすると、上の注釈の意味がさらに理解できると信じています.
後記
ここに展示されているのはSwaggerの最も基本的な機能だけで、もっと強力な機能が後で運用されたら、私は更新し続けます.今私はapiを見てSwaggerUI入力ファイルのテストを探しています.インタフェースがあるので、ファイルをアップロードする必要があります.私が終わったら、また共有しましょう.
私の個人ブログへようこそ
今日は前に書いたインタフェースをドキュメントに整理する必要があります.ボスはswaggerで意見を出しました.私は新大陸を発見したように興奮して、待ちきれずにそれを「占有」しました.
Swagger
は簡単に手に入るので、十数分でできました.ちょうど前のどのように優雅なフォーマットインタフェースに続いて、ここでSpringBootがSwaggerを統合する簡単な過程を話しましょう.Swaggerの紹介
毎回getの新しい技能を分かち合いたい时、やり方によって言えば、1つのブロックがこの技能の“前世今生”を绍介する必要がありますが、私は30分を超えない配置を完成するまで接触して、私に完璧な绍介をさせるのは少し虚しいと思います.http://swagger.io/ http://swagger.io/irc/これはリアルタイムチャットルームで、外国人と「how are you?fine thk you.and you?」とコミュニケーションしたばかりです.https://github.com/swagger-api/swagger-core/wiki/Annotations#apimodelこれはいくつかの注釈のapi Swaggerは3つのモジュールがあります
私は前のコードの書き込み(私のGitHubで閲覧したり、直接cloneをローカルにしてapi-normsブランチに切り替えたりすることができます)、ここではSpringbootを使ってSwagger泥棒JBを統合するのは簡単で、比較的SpringMVCは複雑です.ここはともかく(これからは話さないかもしれませんが、Springbootを使ってから、SpringMVCを捨て始めました)
maven依存
古いしきたりで配置する
<dependency>
<groupId>io.springfoxgroupId>
<artifactId>springfox-swagger2artifactId>
<version>${swagger.version}version>
dependency>
<dependency>
<groupId>io.springfoxgroupId>
<artifactId>springfox-swagger-uiartifactId>
<version>${swagger.version}version>
dependency>
Swagger
注記の追加Applicationに直接
@EnableSwagger2
を追加して、バージョンに注意して、公式サイトの上のバージョンはまだ最新に更新していないで、最新のGithubの上で見て、配置したコードimport org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* Created by wangxc on 2017/3/9.
*/
@SpringBootApplication
@EnableSwagger2
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
はい、次はインタフェースの注釈を説明します!Controllerレイヤでは、次のように構成します.
package com.quick.api;
import com.quick.po.Address;
import com.quick.utils.BaseResp;
import com.quick.utils.ResultStatus;
import io.swagger.annotations.*;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
/**
* Created with IDEA
* User: vector
* Data: 2017/4/12
* Time: 8:41
* Description:
*/
@RestController
@RequestMapping("/api")
@Api("springboot swagger2") // Swagger UI api
public class WebController {
@ApiOperation(" ") //
@ApiImplicitParams({
@ApiImplicitParam(paramType="query",name="province",dataType="String",required=true,value=" ",defaultValue=" "),// , , , , , ( )
@ApiImplicitParam(paramType="query",name="area",dataType="String",required=true,value=" ",defaultValue=" "),
@ApiImplicitParam(paramType="query",name="street",dataType="String",required=true,value=" ",defaultValue=" "),
@ApiImplicitParam(paramType="query",name="num",dataType="String",required=true,value=" ",defaultValue="666")
})
@ApiResponses({
@ApiResponse(code=400,message=" "), //
@ApiResponse(code=404,message=" ")
})
@RequestMapping(value = "/address",method = RequestMethod.POST)
public BaseResp getAddressInfo(@RequestParam(value = "province")String province,
@RequestParam(value = "area")String area,
@RequestParam(value = "street")String street,
@RequestParam(value = "num")String num){
if(StringUtils.isEmpty(province)||StringUtils.isEmpty(area)||StringUtils.isEmpty(street)||StringUtils.isEmpty(num)){
return new BaseResp(ResultStatus.error_invalid_argument);
}
Address address = new Address();
address.setProvince(province);
address.setArea(area);
address.setStreet(street);
address.setNum(num);
return new BaseResp(ResultStatus.SUCCESS,address);
}
@ApiOperation(" ")
@ApiImplicitParams({
@ApiImplicitParam(paramType="query",name="province",dataType="String",required=true,value=" ",defaultValue=" "),
@ApiImplicitParam(paramType="query",name="area",dataType="String",required=true,value=" ",defaultValue=" "),
@ApiImplicitParam(paramType="query",name="street",dataType="String",required=true,value=" ",defaultValue=" "),
@ApiImplicitParam(paramType="query",name="num",dataType="String",required=true,value=" ",defaultValue="666")
})
@ApiResponses({
@ApiResponse(code=400,message=" "),
@ApiResponse(code=404,message=" ")
})
@RequestMapping(value = "/address/list",method = RequestMethod.POST)
public BaseResp> getAddressList(@RequestParam(value = "province")String province,
@RequestParam(value = "area")String area,
@RequestParam(value = "street")String street,
@RequestParam(value = "num")String num){
if(StringUtils.isEmpty(province)||StringUtils.isEmpty(area)||StringUtils.isEmpty(street)||StringUtils.isEmpty(num)){
return new BaseResp(ResultStatus.error_invalid_argument);
}
Address address = new Address();
address.setProvince(province);
address.setArea(area);
address.setStreet(street);
address.setNum(num);
List lists = new ArrayList<>();
lists.add(address);
lists.add(address);
lists.add(address);
return new BaseResp(ResultStatus.SUCCESS,lists);
}
}
私はただ元の基礎の上で下の注釈を追加しました
名前
説明する
@Api()
クラスをSwaggerリソースとしてマークします.
@ApiOperation()
特定のパスに対する動作または通常httpメソッドについて説明する.
@ApiImplicitParams
複数のApiImplicitParamオブジェクトリストのパッケージを許可します.
@ApiImplicitParam
api操作の単一パラメータを表します.
@ApiResponses
複数のApiResponseオブジェクトリストのパッケージを許可します.
@ApiResponse
操作の可能な応答を説明します.
もっとここを見て
このように簡単で、基本的で強力なAPIドキュメントが整理されました!
開始
SpringBootを正常に起動すると、コンソールから出力されていることがわかります.
2017-05-03 21:42:52,975 INFO ClassOrApiAnnotationResourceGrouping:100 - Group for method getAddressList was springboot swagger2
2017-05-03 21:42:52,986 INFO ClassOrApiAnnotationResourceGrouping:100 - Group for method getAddressList was springboot swagger2
Swaggerが正常に走り出したことを説明して、次にブラウザを開けて、あなたのリンクyourdomain/swagger-uiを入力します.私のはhttp://localhost:8080/swagger-ui.html
インタフェースを見て点々とすると、上の注釈の意味がさらに理解できると信じています.
後記
ここに展示されているのはSwaggerの最も基本的な機能だけで、もっと強力な機能が後で運用されたら、私は更新し続けます.今私はapiを見てSwaggerUI入力ファイルのテストを探しています.インタフェースがあるので、ファイルをアップロードする必要があります.私が終わったら、また共有しましょう.
私の個人ブログへようこそ