De nos jours, les applications Web s'exécutent sur des navigateurs de niveau client avec HTML + JavaScript, et le serveur adopte une architecture qui fournit des données à l'aide de l'API REST. Dans cet article, je vais vous montrer à quel point il est facile de créer une API REST de serveur en Java.
Spring Boot + Lombok Spring Boot facilite la création d'applications Web. Vous pouvez également utiliser Lombok pour éliminer le code redondant de Java. Cette fois, en combinant les deux, vous pouvez créer une API REST terriblement facilement. À titre d'exemple, créez une API qui peut REST TODO.
Créez une base pour votre application avec SPRING INITIALIZR. Dépendances sélectionnées JPA, H2, Lombok, Rest Repositories Est spécifié. Appuyez sur Générer un projet pour télécharger le fichier zip et le décompresser.
Définition des données et création d'applications Créez la structure de données en tant que classe Java.
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 est @Data de l'annotation attachée à la classe. Une annotation définie par Lombok qui attribue automatiquement les méthodes d'accès. Cela permet au programmeur de se concentrer sur la définition des données par champ sans écrire de getters / setters redondants.
Définissez une classe pour faire de cette structure de données la structure de type CRUD de l'API REST telle quelle.
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> {
}
Définissez simplement l'interface. Pas besoin de mettre en œuvre le contenu.
C'est la fin de la description du code source. Facile.
Commencez. Dans le répertoire des applications
gradle bootRun
Commencer avec.
Exploitons-le. Utilisez la commande 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
}
}
Vous pouvez voir que des données vides ont été acquises avec "todos": []. Maintenant, créons un Todo. Utilisez la commande curl.
$ curl -i -X POST -H "Content-Type:application/json" -d "{ \"title\" : \"Calendrier de l'Avent\", \"description\" : \"Je dois écrire un article.\", \"deadline\":\"2017-12-21T07:00:00.000Z\" }" http://localhost:8080/todos
{
"title" : "Calendrier de l'Avent",
"description" : "Je dois écrire un article.",
"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"
}
}
}
Il semble que le n ° 1 ait été créé. Je vais vérifier.
$ 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" : "Calendrier de l'Avent",
"description" : "Je dois écrire un article.",
"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
}
}
Vous pouvez obtenir ce que vous avez créé. Je mettrai à jour avec PUT.
$curl -i -X PUT -H "Content-Type:application/json" -d "{ \"title\" : \"Calendrier de l'Avent\", \"description\" : \"Je dois écrire un article. Faisons de notre mieux.\", \"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" : "Calendrier de l'Avent",
"description" : "Je dois écrire un article. Faisons de notre mieux.",
"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"
}
}
}
Je vais vérifier.
$ 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" : "Calendrier de l'Avent",
"description" : "Je dois écrire un article. Faisons de notre mieux.",
"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
}
}
Il a été mis à jour.
Enfin, supprimez-le.
$ curl -i -X DELETE http://localhost:8080/todos/1
HTTP/1.1 204
Date: Thu, 16 Nov 2017 11:45:45 GMT
Confirmez qu'il a disparu.
$ 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": [] Il a disparu.
Nous avons pu créer une API REST simplement en créant une structure de données et une classe Repository pour la publication. L'utilisation de la force de définition de type et des capacités d'annotation de Java facilite la création d'une API REST. comment c'est? Java n'est souvent pas aimé de nos jours, mais l'avez-vous passé en revue? Veuillez utiliser Java avec élégance.
Un exemple de code peut être trouvé à ici.
Tout cela vient du terrain.
Recommended Posts