Ich versuche, eine akka-http API mit swagger & swagger-akka-http zu dokumentieren. This blog post gab mir einen guten Start, aber jetzt bin ich stecken, versuchen, die Tatsache zu dokumentieren, dass die API grundlegende Auth verwendet.So verwenden Sie Swagger mit akka-http & basic auth
, was ich habe ist:
@Path("/foo")
@Api(value = "/foo", produces = "application/json")
class FooService ...
@ApiOperation(value = "Get list of all foos", nickname = "getAllFoos", httpMethod = "GET",
response = classOf[Foo], responseContainer = "Set")
def getAll: Route = get {...
Dies erzeugt eine json, die ich in der Prahlerei UI anzeigen können. Allerdings kann ich die generierten Beispiele nicht verwenden, da die Auth-Option fehlt.
securityDefinitions:
basicAuth:
type: basic
description: HTTP Basic Authentication.
aber ich habe nicht ein:
Ich habe keine Beispiele mit Prahlerei-akka-http, nur einige mit yaml
Config
In einem yaml
, dies könnte wie folgt aussehen gefunden yaml
. Ich habe auch keine Kontrolle über das erzeugte .json
außer durch die Anmerkungen.
IIUC, der richtige Ort, um die Auth-Methode zu erwähnen, ist der authorizations
Parameter der Api
oder ApiOperation
Annotationen. Dieser Parameter sollte ein Array von Authorization
Annotationen enthalten.
Das value
Attribut jeder ist Authorization
Annotation ein SecurityDefinitionObject
Aber ich habe keine Ahnung, wie definieren Sie diese SecurityDefinitionObject
mit Anmerkungen verweisen soll.
Die Annotation Authorization
soll nicht eigenständig verwendet werden und wird ignoriert, wenn dies der Fall ist.
Gibt es etwas, das ich verpasst habe? Brauche ich eine zusätzliche Datei yaml
oder json
mit zusätzlichen Deklarationen und wo gebe ich es an, wenn ich das tue? Etwas viel mehr?
Danke
EDIT
Mit dem 0.7.2-SNAPSHOT, die BasicAuth Array erzeugt liegen diese wird:
paths: {
/foos: {
get: {
security: [
{
basicAuth: [ ]
}
],
Nun ist die einzige Frage ist die Prahlerei zu erhalten UI, um es richtig zu interpretieren und die Auth in den Beispielen zu verwenden. AFAIK, wenn Sie grundlegende Authentifizierung in der Benutzeroberfläche benötigen, müssen Sie es selbst hinzufügen, wie es beschrieben wird here
Ich denke, ich sehe, was Sie sehen, dass @ Api Autorisierungen Wert nicht aus dem Swagger Json kommen. Ich habe mir die io.swagger.jaxrs.Reader-Klasse angeschaut und es sieht so aus, als könnte sie liefern, was benötigt wird. Ich kann das Hinzufügen von Unterstützung wie die vorhandene Info-Objektunterstützung für die SwaggerDocService-Klasse in swagger-akka-http untersuchen. –
https://github.com/pjfanning/swagger-akka-http-sample/tree/api-authorizations hat eine Modifikation, die eine @Api Annotation mit einer Autorisierung demonstriert und die im Swagger-JSON ausgegeben wird (http: // localhost : 12345/api-docs/swagger.json). '" security ": [{ " basicAuth ": [] }],' –
Ich habe eine 0.7.2-SNAPSHOT-Version von swagger-akka-http erstellt, die das Setzen von Sicherheitsdefinitionen unterstützt - https://github.com/pjfanning/swagger-akka-http-Beispiel/Baum/Sicherheit-Definitionen zeigt die Verwendung in einem Beispiel –