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