RestController

์ •์˜

REST ํ˜•์‹์— ๋งž๊ฒŒ ๊ตฌํ˜„๋œ ์ปจํŠธ๋กค๋Ÿฌ

view ๋Œ€์‹  JSON ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

@RestController

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {

	@AliasFor(annotation = Controller.class)
	String value() default "";

}

์‘๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ์•Œ๋งž์€ ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ

@Controller์™€ @ResponseBody๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค.

ResponseEntity

RestController์˜ ์‘๋‹ต๊ฐ’์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด

์˜ˆ์™ธ ์ƒํ™ฉ์—์„œ๋„ html์ด ์•„๋‹Œ JSON์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

  • status: ์‘๋‹ต์˜ status code๋ฅผ ์ง€์ •

  • body: ์‘๋‹ต ๋ฐ์ดํ„ฐ(๊ฐ์ฒด)๋ฅผ ์ง€์ •

  • build: ์‘๋‹ต ๋ฐ”๋””๊ฐ€ ์—†์„ ์‹œ ์‚ฌ์šฉ

Jackson

JSON๊ณผ ๋ฌธ์ž์—ด ๊ฐ„ ๋ณ€ํ™˜์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

JsonIgnore

JSON ์‘๋‹ต์— ํฌํ•จ์‹œํ‚ค์ง€ ์•Š์„ ๋Œ€์ƒ(ํ•„๋“œ)์„ ์ง€์ •ํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜

์˜ˆ๋ฅผ ๋“ค์–ด, ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ๊ฐ™์€ ์ •๋ณด๋Š” ์‘๋‹ต ๋ฐ์ดํ„ฐ์— ํฌํ•จ๋˜๋ฉด ์•ˆ ๋˜๋ฏ€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง€์ •ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

@JsonIgore
private String password;

JsonFormat

ํŠน์ • ๋Œ€์ƒ(ํ•„๋“œ)์— ๋Œ€ํ•œ ๋‚ ์งœ ํ˜•์‹์˜ ๋ณ€ํ™˜์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜

์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•œ๋‹ค.

@JsonFormat(pattern = "yyyyMMddHH")
private LocalDateTime createdAt;

Last updated