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);
    }
}
@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