Resumo: No desenvolvimento do projeto, espera -se que ele seja separado das extremidades dianteiras e traseiras, ou seja, os desenvolvedores de back -end geralmente precisam gerar um grande número de interfaces de serviço. Seja Java ou PHP e outros idiomas, o provedor de interface geralmente precisa gastar uma certa quantidade de esforço para escrever documentos da interface, como o endereço da interface A, a situação dos parâmetros que precisa ser passada, o formato de dados JSON do valor de retorno e a descrição de cada campo. Obviamente, ele também precisa considerar os cabeçalhos de solicitação HTTP, solicitar conteúdo e outras informações. À medida que o projeto progride rapidamente e itera rapidamente, as interfaces saídas pelo back -end geralmente enfrentam problemas como modificação e reparo, o que também significa que os documentos da interface também devem ser ajustados de acordo. A manutenção e a legibilidade dos documentos da interface são bastante reduzidas.
Como o documento da interface requer manutenção de energia e comunicação cara a cara, por que não pensamos em uma solução? Primeiro: você não precisa escrever documentos da interface; Segundo: quando os problemas de interface de comunicação front-end e back-end, o back-end pode fornecer um URL? Liste todas as interfaces de serviço que podem ser chamadas nesta URL e liste os parâmetros e a descrição do valor de retorno em cada interface de serviço. Terceiro: se a interface back-end puder simular chamadas, todos os problemas serão resolvidos. Neste artigo, nos concentraremos em explicar a estrutura Integrated Swagger2 no Sringboot.
1.1. Adicione a dependência do swagger2
Adicione as seguintes dependências ao arquivo pom.xml do projeto.
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</version></dependency><dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.7.0</version></dependency>
Primeiro, precisamos criar uma aula de inicialização, o código é o seguinte:
@SpringbooTApplicationPublic Classe Application {public static void main (string [] args) {springapplication.run (application.class, args); }}Em seguida, crie uma nova classe de configuração para Swagger2 no mesmo diretório de nível da classe acima da seguinte forma:
@Configuration @EnablesWagger2Public Classe swagger2 {@Bean public Docket CreaterRestapi () {Retorne new Docket (documentaçãoTyType.swagger_2) .apiinfo (APIInfo () .Select () .Apis (requestHandortors.basepackage ("com.sharen) .construir(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("Follow Share Niu to learn Springboot Source Code Analysis Series Courses") .description("For more Spring Boot related articles, please follow Share Niu's Blog") .termsOfServiceUrl("http://www.shareniu.com/") .Contact ("NIU") .license ("Copyright 2017-2018 Share NIU") .version ("1.0") .build (); }}O @Configuration formulou que a mola deve carregar esta classe e @EnableSwagger2 Anotação deve ativar a função Swagger.
O Apiinfo no acima acima será exibido na extremidade frontal. Usamos o pacote de varredura para configurar a configuração, ou seja, requestHandlerSelectors.basepackage. Os controladores deste pacote e a subpackagem geram documentos da API. (Exceto para solicitações especificadas por @apiignore anotação).
1.2. Instruções de documentação adicionadas
Após a declaração de classe acima, podemos realmente chamá -la diretamente, mas para aumentar a legibilidade do documento, ainda precisamos adicionar algumas instruções à interface. Vamos escrever um controlador primeiro, como segue:
@RestController@requestmapp (value = "/usuários") classe pública userController {mapa estático <long, user> usuários = collection.synchronizedmap (new hashmap <long, user> ()); static {user user = new user (); user.setage (18); user.setId (1L); user.setName ("AA"); users.put (1L, usuário); } @Apioperation (value = "obtenha toda a lista de usuários", notas = "") @RequestMapping (value = {""}, métodos = requestmethod.get) list <suser> getUserList () {list <suser> r = new ArrayList <suser> (users.values ()); retornar r; } @Apioperation (value = "Crie um novo usuário", NOTS = "Crie um usuário do objeto do usuário") @apiimplicitParam (name = "user", value = "Usuário detalhado Usuário", requerido = true, datatype = "user") @requestMapping (value = ", Method = requestmethod.post) public string (PostUSTER (PostUSTERSBODERSBODER (UserMethod.Post) Public String (PostUSTER (UserMetMod) (UsuSTerMestbody) (Usuário) (UsuStEst) (UsuStemEst). usuário); retornar "sucesso"; } @Apioperation (value = "Obtenha detalhes do usuário", Notes = "Obtenha detalhes do usuário com base no ID do url") @apiimplicitParam (name = "id", value = "ID do usuário", requerido = true, datatype = "long") @ReQuestMapping (value = "/{id}", método = requestmethod.get ") @RequestMapping (valor"/{id} ", método = requestmethod.get)) } @ApiOperation(value="Update user details", notes="Specify update object according to url id") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "User ID", required = true, dataType = "Long"), @ApiImplicitParam(name = "user", value = "User detailed entity user", required = true, dataType = "User") }) @RequestMapping (value = "/{id}", método = requestMethod.put) public string putuser (@PathVariable Long id, usuário do usuário do @RequestBody) {user u = usuários.get (id); u.setName (user.getName ()); u.setage (user.getage ()); users.put (id, u); retornar "sucesso"; } @Apioperation (value = "Excluir usuários existentes", notas = "Especifique o objeto Excluir de acordo com o ID do URL") @apiimplicticParam (name = "id", value = "ID do usuário", requerido = true, datatype = "long") @RequestMapp (value) ({{} ", método = requestsMod.d.d.d) users.remove (id); retornar "sucesso"; }} @Apioperation: usado para descrever a função dessa interface. Essa anotação pode explicar as responsabilidades da interface, as informações do cabeçalho de retorno, o método de solicitação do método ("Get", "Head", "Post", "Put", "Exclete",
@APIImplicitParam: usado para adicionar descrições aos parâmetros. Você pode definir o nome do parâmetro, seja um item necessário, as informações de descrição do parâmetro, seja somente leitura etc.
Depois que o código acima for enviado, inicie o Springboot e visite http://127.0.0.1:8080/swagger-ui.html, como mostrado na figura abaixo:
A imagem acima é dividida em duas partes. A parte superior é configurada através da classe Swagger2, e a parte inferior é o documento da interface na classe UserController.
Aqui usamos /Usuário como exemplo para ilustrar:
Clique /usuário, conforme mostrado na figura a seguir:
O ponto amarelo acima mostra os dados de amostra retornados por esta interface. Ou seja, a estrutura de dados do usuário. Tipo de conteúdo de resposta: as informações do cabeçalho retornadas pela interface. Clique em experimentar. Como mostrado abaixo:
Os cabeçalhos Baody, Code e Response retornados por essa interface foram retornados com sucesso.
Resumir
O exposto acima é o método de integrar a estrutura Swagger2 no Springboot apresentada a você pelo editor. Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!