[JAVA] Implémenter l'API REST avec Spring Boot et JPA (Application Layer)

Implémentation d'un serveur API REST Web simple avec Spring Boot + MySQL --Qiita

Outline Implémentez la couche d'application selon la conception suivante. Implémentation d'un serveur API REST Web simple avec Spring Boot + MySQL --Qiita

Implémentez les deux classes suivantes.

├── application
│   ├── controller
│   │   └── UserController.java
│   └── resource
│       └── UserBody.java

UserBody.java Une classe qui mappe le corps au moment d'une demande POST d'enregistrement d'utilisateur. Il a un processus de validation et de conversion en objet de domaine.

UserBody.java


package com.example.springapi.application.resource;

import com.example.springapi.domain.object.User;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;

/**
 *Demander un cours de cartographie corporelle
 */
@Data
public class UserBody {

    @NotBlank
    @Size(max = 18)
    private String id;

    @NotBlank
    private String value;

    /**
     *Convertir en objet de domaine
     *
     * @objet de domaine de retour
     */
    public User toDomainUser() {
        return User.builder()
                .id(this.id)
                .value(this.value)
                .build();
    }
}

UserController.java

UserController.java


package com.example.springapi.application.controller;

import com.example.springapi.application.exception.NotFoundException;
import com.example.springapi.application.resource.ErrorResponse;
import com.example.springapi.application.resource.UserBody;
import com.example.springapi.domain.object.User;
import com.example.springapi.domain.service.UserService;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.http.HttpStatus;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

/**
 *Contrôleur géré par l'utilisateur
 */
@RestController
@RequiredArgsConstructor
@RequestMapping(path = "/v1/users")
public class UserController {

    @NonNull
    private final UserService userService;

    /**
     *Recherche d'utilisateurs
     *
     * @param id ID utilisateur que vous souhaitez rechercher
     * @retour utilisateur
     */
    @GetMapping("{id}")
    @ResponseStatus(HttpStatus.OK)
    public User findById(@PathVariable("id") String id) {
        return this.userService.findById(id).orElseThrow(RuntimeException::new);
    }

    /**
     *Utilisateur créé et mis à jour
     *
     * @param userBody Corps de la requête
     * @retourner l'utilisateur après la mise à jour
     */
    @PostMapping
    @ResponseStatus(HttpStatus.CREATED)
    public User save(@RequestBody @Validated UserBody userBody) {
        return this.userService.save(userBody.toDomainUser());
    }

    /**
     *Suppression de l'utilisateur
     *
     * @param id ID utilisateur que vous souhaitez supprimer
     */
    @DeleteMapping("{id}")
    @ResponseStatus(HttpStatus.NO_CONTENT)
    public void deleteById(@PathVariable("id") String id) {
            this.userService.deleteById(id);
    }
}

* Annotation utilisée

@RestController Annotation étendue de @Controller. @Controller est un alias pour @Compornent, comme @Service et @Repository. De plus, @RestController affecte @ResponseBody à chaque méthode.

@ResponseBody En le donnant à la méthode, l'objet java de la valeur de retour est converti en json.

@RequestMapping Une annotation qui mappe le chemin spécifié dans le chemin de l'argument à la méthode de la méthode Http spécifiée dans la méthode de l'argument. En l'affectant à la classe, le chemin de l'argument devient le chemin de base de la méthode appartenant à la classe.

@***Mappring Annotation étendue de @RequestMapping. Une annotation qui peut omettre la méthode.

@ResponseStatus Une annotation qui vous permet de spécifier un code d'état.

@PathVariable Une annotation qui mappe les paramètres de chemin aux arguments.

@RequestBody Une annotation qui mappe le corps d'une requête à un argument.

@Validated Une annotation qui active l'annotation de validation donnée à la classe mappée en la donnant en même temps que @RequestBody.

Recommended Posts

Implémenter l'API REST avec Spring Boot et JPA (Application Layer)
Implémenter l'API REST avec Spring Boot et JPA (couche d'infrastructure)
Implémenter l'API REST avec Spring Boot et JPA (Domain Layer Edition)
Implémentez une API Rest simple avec Spring Security avec Spring Boot 2.0
Implémenter l'API REST avec Spring Boot
Implémentez une API Rest simple avec Spring Security & JWT avec Spring Boot 2.0
Implémentez un serveur API Web REST simple avec Spring Boot + MySQL
[Débutant] Essayez d'écrire l'API REST pour l'application Todo avec Spring Boot
Hello World (API REST) avec Apache Camel + Spring Boot 2
[Spring Boot] Obtenez des informations utilisateur avec l'API Rest (débutant)
Personnalisez la réponse aux erreurs de l'API REST avec Spring Boot (Partie 2)
Personnalisez la réponse aux erreurs de l'API REST avec Spring Boot (Partie 1)
Spring avec Kotorin - 4 Conception d'API REST
Gérez l'API de date et d'heure Java 8 avec Thymeleaf avec Spring Boot
Créer une application d'enquête avec Spring Boot
Connectez-vous à la base de données avec spring boot + spring jpa et effectuez l'opération CRUD
Implémenter l'application Spring Boot dans Gradle
Créer une API REST avec Spring JPA Data avec REST et Lombok incroyablement facile.
Traitement lors du démarrage d'une application avec Spring Boot
HTTPS avec Spring Boot et Let's Encrypt
Démarrez le développement d'applications Web avec Spring Boot
Lancez l'application Nginx + Spring Boot avec docker-compose
Implémenter CRUD avec Spring Boot + Thymeleaf + MySQL
Implémenter la fonction de pagination avec Spring Boot + Thymeleaf
Exécutez l'application WEB avec Spring Boot + Thymeleaf
Méthode d'implémentation pour source multi-données avec Spring boot (Mybatis et Spring Data JPA)
Configurer l'application Spring Boot avec le module multiple maven
Essayez d'implémenter la fonction de connexion avec Spring Boot
Créer un serveur API Web avec Spring Boot
Disponibilité de l'application Spring Boot 2.3
Télécharger avec Spring Boot
Intégration Tomcat, Apache et WebSocket intégrée à l'application Spring Boot
Essayez d'utiliser un conteneur DI avec Laravel et Spring Boot
Changer d'environnement avec Spring Boot application.properties et l'annotation @Profile
Mappez automatiquement DTO aux entités avec l'API Spring Boot
Essayez d'utiliser OpenID Connect avec Keycloak (application Spring Boot)
Mémo d'utilisation de Spring Security: coopération avec Spring MVC et Boot
Spring Boot avec les paramètres du filtre de sécurité Spring et les points addictifs
Un mémorandum lors de la création d'un service REST avec Spring Boot
Présentez swagger-ui à l'API REST implémentée dans Spring Boot
Tentative de SSR Vue.js avec Spring Boot et GraalJS
Connectez Spring Boot et Angular en toute sécurité avec OpenAPI Generator
Politique de contre-mesure CSRF et exemple de mise en œuvre dans une application REST utilisant "Spring Boot" + "EXT JS"
Générer un code à barres avec Spring Boot
Hello World avec Spring Boot
Spring with Kotorin --- 8. Couche de référentiel
J'ai essayé le guide d'introduction de Spring Boot [Accès aux données avec JPA]
Démarrez avec Spring Boot
Bonjour tout le monde avec Spring Boot!
[Spring Boot] Création d'applications Web
Exécutez LIFF avec Spring Boot
Connexion SNS avec Spring Boot
Téléchargement de fichiers avec Spring Boot
Spring Boot commençant par copie
Faisons une API simple avec EC2 + RDS + Spring boot ①
Jusqu'à INSERT et SELECT sur Postgres avec botte de printemps et feuille de thym
Comment appeler et utiliser l'API en Java (Spring Boot)
Ressort avec Kotorin ―― 7. Couche de service
Essayez d'utiliser l'API de recherche de code postal avec Spring Boot
Application Java CICS-Run - (4) Application Spring Boot
Spring Boot à partir de Docker