파일 명: C/git-practice/be-homework-dto
package com.springboot.coffee;
import com.springboot.member.NotSpace;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.validator.constraints.Range;
import javax.validation.constraints.*;
@Setter
@Getter
public class CoffeePostDto {
@NotBlank
@Pattern(regexp = "^[가-힣]*$")
private String korName;
@NotBlank
@Pattern(regexp = "^[a-zA-Z]+(\\\\s?[a-zA-Z]+)*$", message = "알파벳 대소문자(a~z, A~Z)만 입력 가능합니다.")
private String engName;
@Range(min = 100, max = 50000, message = "100~50000")
private Integer price;
}
package com.springboot.coffee;
import com.springboot.member.NotSpace;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.validator.constraints.Range;
import javax.validation.constraints.*;
@Getter
@Setter
public class CoffeePatchDto {
private long coffeeId;
@Pattern(regexp = "^[가-힣]*$")
@NotSpace(message = "korName은 공백이 아니어야 합니다")
private String korName;
@NotSpace
@Pattern(regexp = "^[a-zA-Z]+(\\\\s[a-zA-Z]+)*$", message = "알파벳 대소문자(a~z, A~Z)만 입력 가능합니다.")
private String engName;
@Range(min = 100, max = 50000, message = "100~50000")
private Integer price;
}
package com.springboot.coffee;
import com.springboot.member.MemberPatchDto;
import com.springboot.member.MemberPostDto;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import javax.validation.constraints.Min;
import java.util.HashMap;
import java.util.Map;
@Validated
@RestController
@RequestMapping("/v1/coffees")
public class CoffeeController {
// 1. DTO 클래스 및 유효성 검증을 적용하세요.
@PostMapping
public ResponseEntity postCoffee(@Valid @RequestBody CoffeePostDto coffeePostDto) {
return new ResponseEntity<>(coffeePostDto, HttpStatus.CREATED);
}
// 2. DTO 클래스 및 유효성 검증을 적용하세요.
@PatchMapping("/{coffee-id}")
public ResponseEntity patchCoffee(@PathVariable("coffee-id") @Min(1) long coffeeId,
@Valid @RequestBody CoffeePatchDto coffeePatchDto) {
coffeePatchDto.setCoffeeId(coffeeId);
// No need Business logic
return new ResponseEntity<>(coffeePatchDto, HttpStatus.OK);
}
@GetMapping("/{coffee-id}")
public ResponseEntity getCoffee(@PathVariable("coffee-id") long coffeeId) {
System.out.println("# coffeeId: " + coffeeId);
// not implementation
return new ResponseEntity<>(HttpStatus.OK);
}
@GetMapping
public ResponseEntity getCoffees() {
System.out.println("# get Coffees");
// not implementation
return new ResponseEntity<>(HttpStatus.OK);
}
@DeleteMapping("/{coffee-id}")
public ResponseEntity deleteCoffee(@PathVariable("coffee-id") long coffeeId) {
// No need business logic
return new ResponseEntity(HttpStatus.NO_CONTENT);
}
}