[JAVA] Das Erstellen einer REST-API mit Spring JPA-Daten mit REST und Lombok ist unglaublich einfach.

Apropos Webanwendungen in diesen Tagen, REST

Heutzutage werden Webanwendungen in Browsern auf Clientebene mit HTML + JavaScript ausgeführt, und der Server verwendet eine Architektur, die Daten mithilfe der REST-API bereitstellt. In diesem Artikel werde ich Ihnen zeigen, wie einfach es ist, eine Server-REST-API in Java zu erstellen.

Spring Boot + Lombok Spring Boot erleichtert das Erstellen von Webanwendungen. Sie können Lombok auch verwenden, um redundanten Code aus Java zu entfernen. Dieses Mal können Sie durch Kombination der beiden Funktionen ganz einfach eine REST-API erstellen. Erstellen Sie als Beispiel eine API, die TODO RESTEN kann.

Verfahren

  1. Erstellen Sie mit SPRING INITIALIZR eine Basis für Ihre Anwendung. image.png Ausgewählte Abhängigkeiten JPA, H2, Lombok, Rest Repositories Angegeben. Klicken Sie auf Projekt generieren, um die Zip-Datei herunterzuladen und zu entpacken.

  2. Datendefinition und Anwendungserstellung Erstellen Sie die Datenstruktur als Java-Klasse.

package com.ukiuni.easyrest.entity;

import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import lombok.Data;

@Data
@Entity
public class Todo {
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private long id;

	private String title;
	private String description;
	private boolean done;
	@Temporal(TemporalType.TIMESTAMP)
	private Date deadline;
}

Kimo ist @Data der der Klasse angehängten Anmerkung. Eine von Lombok definierte Anmerkung, die Accessor-Methoden automatisch zuweist. Dadurch kann sich der Programmierer darauf konzentrieren, Daten nach Feldern zu definieren, ohne redundante Getter / Setter zu schreiben.

Definieren Sie eine Klasse, um diese Datenstruktur so wie sie ist zur CRUD-Typstruktur der REST-API zu machen.

package com.ukiuni.easyrest.repository;

import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;

import com.ukiuni.easyrest.entity.Todo;

@RepositoryRestResource(collectionResourceRel = "todos", path = "todos")
public interface TodoRepository extends PagingAndSortingRepository<Todo, Long> {
}

Definieren Sie einfach die Schnittstelle. Keine Notwendigkeit, den Inhalt zu implementieren.

Dies ist das Ende der Quellcodebeschreibung. Einfach.

Start und Betrieb

Anlaufen. Im Anwendungsverzeichnis

gradle bootRun

Beginnen mit.

Lass es uns bedienen. Verwenden Sie den Befehl curl.

$ curl -i http://localhost:8080/todos
HTTP/1.1 200
Content-Type: application/hal+json;charset=UTF-8
Transfer-Encoding: chunked
Date: Thu, 16 Nov 2017 11:47:24 GMT

{
  "_embedded" : {
    "todos" : [ ]
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/todos{?page,size,sort}",
      "templated" : true
    },
    "profile" : {
      "href" : "http://localhost:8080/profile/todos"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 0,
    "totalPages" : 0,
    "number" : 0
  }
}

Sie können sehen, dass leere Daten mit "todos" erfasst wurden: []. Jetzt erstellen wir einen Todo. Verwenden Sie den Befehl curl.

$ curl -i -X POST -H "Content-Type:application/json" -d "{  \"title\" : \"Adventskalender\",  \"description\" : \"Ich muss einen Artikel schreiben.\", \"deadline\":\"2017-12-21T07:00:00.000Z\" }" http://localhost:8080/todos
{
  "title" : "Adventskalender",
  "description" : "Ich muss einen Artikel schreiben.",
  "done" : false,
  "deadline" : "2017-12-21T07:00:00.000+0000",
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/todos/1"
    },
    "todo" : {
      "href" : "http://localhost:8080/todos/1"
    }
  }
}

Es scheint, dass Nr. 1 geschaffen wurde. Ich werde es prüfen.

$ curl -i http://localhost:8080/todos
HTTP/1.1 200
Content-Type: application/hal+json;charset=UTF-8
Transfer-Encoding: chunked
Date: Thu, 16 Nov 2017 11:50:57 GMT

{
  "_embedded" : {
    "todos" : [ {
      "title" : "Adventskalender",
      "description" : "Ich muss einen Artikel schreiben.",
      "done" : false,
      "deadline" : "2017-12-21T07:00:00.000+0000",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/todos/1"
        },
        "todo" : {
          "href" : "http://localhost:8080/todos/1"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/todos{?page,size,sort}",
      "templated" : true
    },
    "profile" : {
      "href" : "http://localhost:8080/profile/todos"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 1,
    "totalPages" : 1,
    "number" : 0
  }
}

Sie können bekommen, was Sie erstellt haben. Ich werde mit PUT aktualisieren.

$curl -i -X PUT -H "Content-Type:application/json" -d "{  \"title\" : \"Adventskalender\",  \"description\" : \"Ich muss einen Artikel schreiben. Geben wir unser Bestes.\", \"deadline\":\"2017-12-21T07:00:00.000Z\" }" http://localhost:8080/todos/1
HTTP/1.1 200
Location: http://localhost:8080/todos/1
Content-Type: application/hal+json;charset=UTF-8
Transfer-Encoding: chunked
Date: Thu, 16 Nov 2017 11:43:30 GMT

{
  "title" : "Adventskalender",
  "description" : "Ich muss einen Artikel schreiben. Geben wir unser Bestes.",
  "done" : false,
  "deadline" : "2017-12-21T07:00:00.000+0000",
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/todos/1"
    },
    "todo" : {
      "href" : "http://localhost:8080/todos/1"
    }
  }
}

Ich werde es prüfen.

$ curl -i http://localhost:8080/todos
HTTP/1.1 200
Content-Type: application/hal+json;charset=UTF-8
Transfer-Encoding: chunked
Date: Thu, 16 Nov 2017 11:51:55 GMT

{
  "_embedded" : {
    "todos" : [ {
      "title" : "Adventskalender",
      "description" : "Ich muss einen Artikel schreiben. Geben wir unser Bestes.",
      "done" : false,
      "deadline" : "2017-12-21T07:00:00.000+0000",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/todos/1"
        },
        "todo" : {
          "href" : "http://localhost:8080/todos/1"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/todos{?page,size,sort}",
      "templated" : true
    },
    "profile" : {
      "href" : "http://localhost:8080/profile/todos"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 1,
    "totalPages" : 1,
    "number" : 0
  }
}

Es wurde aktualisiert.

Zum Schluss löschen Sie es.

$ curl -i -X DELETE http://localhost:8080/todos/1
HTTP/1.1 204
Date: Thu, 16 Nov 2017 11:45:45 GMT

Bestätigen Sie, dass es verschwunden ist.

$ curl -i http://localhost:8080/todos
HTTP/1.1 200
Content-Type: application/hal+json;charset=UTF-8
Transfer-Encoding: chunked
Date: Thu, 16 Nov 2017 11:47:24 GMT

{
  "_embedded" : {
    "todos" : [ ]
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/todos{?page,size,sort}",
      "templated" : true
    },
    "profile" : {
      "href" : "http://localhost:8080/profile/todos"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 0,
    "totalPages" : 0,
    "number" : 0
  }
}

"todos": [] Es ist verschwunden.

Wie ist das? Es ist schrecklich einfach, oder?

Wir konnten eine REST-API erstellen, indem wir einfach eine Datenstruktur und eine Repository-Klasse für die Veröffentlichung erstellt haben. Durch die Verwendung der Java-Funktionen für Typdefinitionsstärke und Anmerkungen können Sie ganz einfach eine REST-API erstellen. Wie ist das? Java wird heutzutage oft nicht gemocht, aber haben Sie es überprüft? Bitte verwenden Sie Java elegant.

Beispielcode finden Sie unter hier.

Das ist alles vom Feld.

Recommended Posts

Das Erstellen einer REST-API mit Spring JPA-Daten mit REST und Lombok ist unglaublich einfach.
Erstellen eines gemeinsamen Repositorys mit Spring Data JPA
Implementieren Sie die REST-API mit Spring Boot und JPA (Application Layer).
Implementieren Sie die REST-API mit Spring Boot und JPA (Infrastructure Layer).
Implementieren Sie die REST-API mit Spring Boot und JPA (Domain Layer Edition).
ODER suchen Sie mit der Spring Data Jpa-Spezifikation
Feder mit Kotorin --2 RestController und Datenklasse
Implementierungsmethode für Multi-Datenquelle mit Spring Boot (Mybatis und Spring Data JPA)
Sortieren nach Spring Data JPA (mit zusammengesetzter Schlüsselsortierung)
Ein Memorandum beim Versuch von Spring Data JPA mit STS
Ich habe versucht, mit Spring Data JPA zu beginnen
Bis zur Verwendung von Spring Data und JPA Part 2
Ein Memorandum beim Erstellen eines REST-Service mit Spring Boot
Ich habe das Spring Boot-Einführungshandbuch [Zugriff auf Daten mit JPA] ausprobiert.
Sehen Sie sich das Verhalten von Entitätsaktualisierungen mit Spring Boot + Spring Data JPA an
Feder mit Kotorin --4 REST API Design
[So installieren Sie Spring Data Jpa]
Datenverknüpfung mit Spark und Cassandra
Spring Data JPA SQL-Protokollausgabe
Ich möchte Bilder mit REST Controller von Java und Spring anzeigen!