REST Dokumentation mit Swagger

Die REST API der B2B wird automatisch durch Swagger dokumentiert.

Weboberfläche

Die Doku wird durch die B2B unter folgendem Link angezeigt: http://<my-host>:<my-port>/b2bbp-engine/api/swagger-ui.html. Hierbei wird ein Login der App zur Authentifizierung benötigt.

Dev Konfiguration

Mit Hilfe von Swagger kann automatische Doku für spring-RestController generiert werden.

Die Doku wird im Code per Annotation geschrieben. Die B2B stellt die Doku dann per Weboberfläche zur Verfügung.

Swagger wird in der B2B mit der Klasse SwaggerConfiguration konfiguriert. Diese Klasse muss für das Erstellen neuer Swagger-Doku nicht weiter angepasst werden.

Dev Dokumentation am RestController

Swagger ist geeignet für RestController, also für Klassen, die mit @RestController annotiert sind.

Als Beispiel dient das org.b2bbp.rest.controller.ui.ControllerTemplate.

Die Klasse muss zusätzlich mit @Api annotiert werden, damit Swagger Doku erzeugt werden kann. Außerdem ist das Argument tags zu befüllen.

Beispiel:

@RestController
@RequestMapping(value = "/ui/admin/v1")
@Api(tags = {"internal"})
public class AdminController {...}

Ein Endpunkt (eine Methode, die z.B. mit @PostMapping annotiert ist) kann dokumentiert werden, indem die Annotation @ApiOperation an der Methode gesetzt wird. Die Dokumentation ist als Argumente (value, notes) der Annotation zu übergeben. Ggf. können weitere Argumente der Annotation genutzt werden, vgl. hierzu das Javadoc von ApiOperation.

Beispiel:

@ApiOperation(value = "trigger service execution", 
	notes = "The service runs on the node ...")
@PostMapping(value = "/execute")
public void executeJobNow(...) {...}

Falls der Endpunkt Parameter hat, also falls die Methode Argumente hat, die mit @RequestParam annotiert sind, dann können die Parameter zusätzlich mit @ApiParam annotiert werden. Mit Hilfe dieser Annotation können Parameter dokumentiert werden. Eine Beschreibung kann über das Argument value übergeben werden. Für die weiteren Annotations-Argumente vgl. das Javadoc von ApiParam.

Beispiel:

@ApiOperation(value = "...")
@PostMapping(value = "/execute")
public void executeJobNow(
		@ApiParam(value = "ServiceId of a SchedulerRegisterService")
		@RequestParam
		String job) {...}
View Me   Edit Me