Come documentare l'API REST prima della codifica

4

Il mio team sta lavorando su un'applicazione Web che utilizza Micro Service Architecture e Angular + Spring MVC. Seguiamo lo sviluppo Agile. Per ogni storia, creiamo alcune attività di implementazione e test. Documentare l'API REST è il primo compito da svolgere nella storia.

Attualmente lo documentiamo su Confluence in modo che gli sviluppatori e i tester possano lavorare rispettivamente su casi di implementazione e test.

Stiamo cercando di generare documentazione API REST con Swagger usando automaticamente codegen. Sembra come documentare in Confluence e generare con Swagger è ridondante. Tuttavia, lo swagger genera una documentazione accurata.

Qual è il modo migliore per documentare l'API REST prima della codifica? Ci sono altri strumenti?

    
posta TechCrunch 01.03.2017 - 03:31
fonte

2 risposte

2

Perché non provi l' editor Swagger ? Ti permette di definire l'API in anticipo, e successivamente puoi sostituire quella documentazione con quella generata automaticamente, se lo desideri, senza modificarne troppo l'aspetto.

Ad ogni modo, riconosco il tuo problema, è un po 'un problema mantenere aggiornata la documentazione di Confluence. Potresti configurare un server di integrazione continua per aggiornare automaticamente Confluence ogni volta che viene aggiornato il codice sorgente? Per Jenkins, c'è almeno qualcosa chiamato Confluence Publisher Plugin . Confluence ha anche delle belle API così puoi anche creare degli script che il server CI esegue e che aggiorna la wiki in qualche modo completamente personalizzato.

In ogni caso dovresti avere un link alla fonte autorevole, cioè quella generata da Swagger, nella parte superiore della pagina Confluence.

    
risposta data 01.03.2017 - 09:32
fonte
1

Perché non usare Swagger in correlazione con la codifica? La documentazione è sempre nella versione attuale, non è necessario mantenerla, è possibile testarla - molti vantaggi in questo tipo di approccio. È semplice integrare Swagger con Spring MVC. Inizia con l'API ( non hai bisogno di implementare nulla ), quindi in Spring MVC sarebbe il livello dei controller e lo userà come scheletro per la tua app. Qui hai una configurazione per Swagger che usa Docker - wrapper per swagger api.

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.basePackage(
                        "com.example.controllers"))
                .paths(PathSelectors.any())
                .build()
                .apiInfo(apiInfo());
    }

    private ApiInfo apiInfo() {
        ApiInfo apiInfo = new ApiInfo(
                "Info ...",
                "Info ...",
                "Version ...",
                "",
                new Contact("John Smith", "",
                        "[email protected]"),
                "Copyright 2017 John Smith",
                "");
        return apiInfo;
    }

}

E due dipendenze, assumendo che tu usi Maven

<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>

Dopo aver creato e distribuito l'app, i documenti Swagger sarebbero disponibili

YOUR_SERVER:PORT/swagger-ui.html#/

E esempio di utilizzo nel controller

@ApiOperation(value = "Register user")
@RequestMapping(value = "/users", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@ResponseStatus(HttpStatus.CREATED)
public void registerUser(@RequestBody @Valid NewUserRequest newUserRequest) {
    // you don't need to implement it now
}
    
risposta data 01.03.2017 - 10:41
fonte

Leggi altre domande sui tag