Implementierung eines einfachen Web-REST-API-Servers mit Spring Boot + MySQL - Qiita
Outline Implementieren Sie die Anwendungsschicht gemäß dem folgenden Entwurf. Implementierung eines einfachen Web-REST-API-Servers mit Spring Boot + MySQL - Qiita
Implementieren Sie die folgenden zwei Klassen.
├── application
│ ├── controller
│ │ └── UserController.java
│ └── resource
│ └── UserBody.java
UserBody.java Eine Klasse, die den Textkörper zum Zeitpunkt einer POST-Anforderung zur Benutzerregistrierung abbildet. Es verfügt über einen Validierungs- und Konvertierungsprozess zum Domänenobjekt.
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;
/**
*Body-Mapping-Klasse anfordern
*/
@Data
public class UserBody {
@NotBlank
@Size(max = 18)
private String id;
@NotBlank
private String value;
/**
*In Domänenobjekt konvertieren
*
* @Domain-Objekt zurückgeben
*/
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.*;
/**
*Benutzergesteuerte Steuerung
*/
@RestController
@RequiredArgsConstructor
@RequestMapping(path = "/v1/users")
public class UserController {
@NonNull
private final UserService userService;
/**
*Benutzersuche
*
* @param id Benutzer-ID, nach der Sie suchen möchten
* @wiederkehrender Benutzer
*/
@GetMapping("{id}")
@ResponseStatus(HttpStatus.OK)
public User findById(@PathVariable("id") String id) {
return this.userService.findById(id).orElseThrow(RuntimeException::new);
}
/**
*Benutzer erstellt und aktualisiert
*
* @param userBody Anfragetext
* @Benutzer nach dem Update zurückgeben
*/
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public User save(@RequestBody @Validated UserBody userBody) {
return this.userService.save(userBody.toDomainUser());
}
/**
*User Löschung
*
* @param id Benutzer-ID, die Sie löschen möchten
*/
@DeleteMapping("{id}")
@ResponseStatus(HttpStatus.NO_CONTENT)
public void deleteById(@PathVariable("id") String id) {
this.userService.deleteById(id);
}
}
@RestController Erweiterte Annotation von @Controller. @Controller ist ein Alias für @Compornent, wie @Service und @Repository. Darüber hinaus weist @RestController jeder Methode @ResponseBody zu.
@ResponseBody Durch die Übergabe an die Methode wird das Java-Objekt des Rückgabewerts in json konvertiert.
@RequestMapping Eine Anmerkung, die den im Argumentpfad angegebenen Pfad der Methode in der in der Argumentmethode angegebenen HTTP-Methode zuordnet. Durch Zuweisen zur Klasse wird der Pfad des Arguments zum Basispfad der zur Klasse gehörenden Methode.
@***Mappring Erweiterte Annotation von @RequestMapping. Eine Anmerkung, bei der die Methode weggelassen werden kann.
@ResponseStatus Eine Anmerkung, mit der Sie einen Statuscode angeben können.
@PathVariable Eine Anmerkung, die Pfadparameter Argumenten zuordnet.
@RequestBody Eine Anmerkung, die den Hauptteil einer Anforderung einem Argument zuordnet.
@Validated Eine Annotation, die die Validierungsanmerkung aktiviert, die der zugeordneten Klasse gegeben wird, indem sie gleichzeitig mit @RequestBody gegeben wird.
Recommended Posts