2016-03-26 19 views
0

Ich benutzte Swagger in meinen Projekten, um Code zu generieren, HTTP-Anfragen (GET, POST und DELETE) zu einigen Objcets (benannte Projekte) zu tun.Wie benutze ich H2-Datenbank mit Swagger

Das Problem hier ist, dass diese Objekte im Speicher erstellt werden. Ich meine, wenn ich meinen Web-Service neu starte, werden die vorherigen Änderungen gelöscht. Daher möchte ich eine (lokale) Datenbank verwenden, um diese Änderungen zu speichern. Ich bin wirklich interessiert von H2-Datenbank. Ich möchte auch JDBC verwenden, um mich mit meiner lokalen Datenbank zu verbinden. Das Hauptproblem hier ist, dass ich zuerst nicht verstanden habe, wie man jdbc benutzt. Zweitens ist der vom Prahler erzeugte Code zu kompliziert für mich. Ich weiß nicht, wo ich den jdbc-Code machen soll ...

Ich habe hier den Code für die beiden Anfragen (zum Beispiel POST und DELETE) kopiert. Kannst du mir helfen, die Verbindung mit der lokalen h2-Datenbank herzustellen? Soll ich diesen Code in dieser Klasse machen?

ist hier ein Teil des Prahlerei Code:

@POST 
@Consumes({"application/x-www-form-urlencoded"}) 
@Produces({"application/json"}) 
@io.swagger.annotations.ApiOperation(value = "", notes = "Creates a project and returns the whole object", response = Project.class, tags = {}) 
@io.swagger.annotations.ApiResponses(value = { 
@io.swagger.annotations.ApiResponse(code = 200, message = "Created project", response = Project.class), 
@io.swagger.annotations.ApiResponse(code = 500, message = "Internal API error/Server error", response = Project.class)}) 
public Response createProject(
@ApiParam(value = "Document name", required = true) @FormParam("name") String name, 
    @ApiParam(value = "Document title") @FormParam("trigram") String trigram, @Context SecurityContext securityContext) 
    throws NotFoundException { 
    return delegate.createProject(name, trigram, securityContext); 
    } 

    //url is localhost:8080/api/v1/projects/{id} 
    @DELETE 
    @Path("/{id}") 
    @io.swagger.annotations.ApiOperation(value = "", notes = "Deletes all projects", response = void.class, tags={ }) 
    @io.swagger.annotations.ApiResponses(value = { 
    @io.swagger.annotations.ApiResponse(code = 200, message = "Project is deleted.", response = void.class), 
    @io.swagger.annotations.ApiResponse(code = 500, message = "Internal API error/Server error", response = void.class) }) 
    public Response deleteProject(
    @ApiParam(value = "Document ID",required=true) @PathParam("id") String id,@Context SecurityContext securityContext) 
    throws NotFoundException { 
    return delegate.deleteProject(id,securityContext); } 
+0

Konnten Sie diese @ salamanka44 lösen? – Sampada

Antwort

0

Sie sollten eine separate dataobjectaccess (DAO) Klasse erstellen Sie eine Verbindung zur Datenbank zu machen. Sie können ihre Methoden in der Klasse aufrufen, die Sie in die Frage aufgenommen haben.

In der Tat ist der Grund Weg, um die Swagger-Schnittstelle und Implementierungsklassen sogar zu trennen, so dass es leichter zu lesen ist. Auf diese Weise wird Ihre RESTful-API wirklich eine Schnittstelle mit allen Anmerkungen an einem Ort sein. Die Implementierungsklasse kann Code enthalten, der wiederum die DAO-Klasse aufruft, um eine Verbindung zu Datenbanken herzustellen.

Verschiedene Tutorials sind für das Lernen jdbc spezifisch h2:

http://www.h2database.com/html/tutorial.html http://www.ayukucode.org/2012/03/16/create-table-insert-query-with-jdbc-and-h2-database/