[Spring] ๐ŸŒฑ ResponseEntity

์ด์ค€์˜ยท2023๋…„ 9์›” 5์ผ
0

๐ŸŒฑ Spring

๋ชฉ๋ก ๋ณด๊ธฐ
13/18
post-thumbnail

๐ŸŒฑ ResponseEntity

์Šคํ”„๋ง์—์„œ๋Š” ResponseEntity๋ผ๋Š” ๊ฒƒ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์กด ์ œ ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ์—์„œ ์ €๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๊ทธ์ € ๊ฐ’ ์ž์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณค ํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. @RestController ์–ด๋…ธํ…Œ์ด์…˜์„ ๋‹ฌ์•„๋‘๊ณ  ๋ฐ˜ํ™˜๊ฐ’์„ ๊ฐ์ฒด๋กœ ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด Jackson ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์‘๋‹ต ๊ฐ์ฒด๋ฅผ JSON์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์ฒ˜๋Ÿผ ๊ฐ์ฒด๋ฅผ return ํ•˜๋Š” ๊ฒฝ์šฐ HTTP ์‘๋‹ต์„ ์ œ์–ดํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋‹จ์ ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

@GetMapping
    public List<PostResponseDto> findAllPosts() {

    return postService.findAllPosts();
}

๊ทธ๋Ÿฌ๋‚˜ ์ผ๋ฐ˜์ ์ธ API์—์„œ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ๊ฐํ•ด๋ณธ๋‹ค๋ฉด ๋‹จ์ˆœํ•œ ๊ฐ์ฒด Value๋งŒ ์žˆ์ง€ ์•Š๊ณ  ์ƒํƒœ์ฝ”๋“œ, ์‘๋‹ต ๋ฉ”์„ธ์ง€ ๋“ฑ์ด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฑธ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‘๋‹ต์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๊ฒƒ์ด ResponseEntity์ž…๋‹ˆ๋‹ค.

ResponseEntity๋Š” ๋‚ด๋ถ€ ํ•„๋“œ ๋ณ€์ˆ˜๋กœ status๋ฅผ ๊ฐ€์ ธ์•ผ ํ•˜๊ธฐ์— ์ƒ์„ฑ์‹œ์— status ๊ฐ’์„ ๋ฐ˜๋“œ์‹œ ์ถ”๊ฐ€ํ•ด ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์ œ๋„ค๋ฆญ์„ ํ†ตํ•ด body ๋ถ€๋ถ„์— ์›ํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ์ง‘์–ด๋„ฃ์–ด ์‘๋‹ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ResponseEntity ์ ์šฉํ•˜๊ธฐ

ResponseEntity๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ body, HttpStatusCode ๋ฅผ ๋‹ด์•„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

new ResponseEntity<>(body,httpStatusCode);

๊ฐ„๋‹จํ•œ ์‘๋‹ต ๋งŒ๋“ค๊ธฐ

์šฐ์„  ๊ฐ„๋‹จํ•˜๊ฒŒ ์ƒํƒœ์ฝ”๋“œ์™€ ๋ฉ”์„ธ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด

public class Message {

    private int statusCode;
    private String message;
}

์‘๋‹ต์œผ๋กœ ๋ณด๋‚ผ ๊ฐ’๋“ค์„ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ํ•˜๋‚˜ ์ƒ์„ฑํ•˜๊ณ 

@GetMapping
public ResponseEntity<Message> test() {
	Message message = new Message(HttpStatus.OK, "ResponseEntity ์‘๋‹ต ์„ฑ๊ณต");
    return new ResponseEntity<>(message,HttpStatus.OK);
}

์œ„์™€๊ฐ™์ด return ๊ฐ’์œผ๋กœ ResponseEntity์— body, statusCode๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด

{
    "statusCode": 200,
    "message": "ResponseEntity ์‘๋‹ต ์„ฑ๊ณต",
}

์œ„์™€๊ฐ™์€ ์‘๋‹ต์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ณ ์žˆ๋Š” ์‘๋‹ต ๋งŒ๋“ค๊ธฐ
public class Message<T> {

    private int statusCode;
    private String message;
    private T data;
}

์œ„์™€๊ฐ™์ด data๋ฅผ ๋‹ด์„ ํ•„๋“œ ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ

@GetMapping
    public ResponseEntity<Message> findAllPosts() {

	List<PostResponseDto> postResponseDtos = postService.findAllPosts();
	Message message = new Message(HttpStatus.OK, "์ „์ฒด ๊ฒŒ์‹œ๋ฌผ ์กฐํšŒ ์„ฑ๊ณต",postResponseDtos);
    return new ResponseEntity<>(message,HttpStatus.OK);
    
}

ResponsEntity๋ฅผ ๋ฐ˜ํ™˜ํ•ด ์ค€๋‹ค๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์ด ์‘๋‹ต์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

{
    "httpStatus": "OK",
    "message": "์ „์ฒด ๊ฒŒ์‹œ๋ฌผ ์กฐํšŒ ์„ฑ๊ณต",
    "data": [
        {
            "id": 2,
            "title": "title",
            "content": "content",
            "author": "jihyun",
            "createdAt": "2023-09-05T02:23:04.44935",
            "modifiedAt": "2023-09-05T02:23:04.44935"
        },
        {
            "id": 1,
            "title": "title",
            "content": "content",
            "author": "jihyun",
            "createdAt": "2023-09-05T02:23:03.730723",
            "modifiedAt": "2023-09-05T02:23:03.730723"
        }
    ]
}


๐ŸŒฑ ResponseEntity๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•

responseEntity๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ๋‘๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜๋‚˜๋Š” ์œ„์—์„œ ๋‹ค๋ค˜๋˜ new ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•œ ์ƒ์„ฑ์ž ํ˜ธ์ถœ์ด๊ณ ,

new ResponseEntity<>(body,httpStatusCode);

๋‘๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ ๋นŒ๋” ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค.
return ResponseEntity.ok()
	.headers(headers)
	.body(body);

์œ„์™€๊ฐ™์ด ๋ฉ”์†Œ๋“œ ์ฒด์ด๋‹์œผ๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ResponseEntity๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

profile
์ž‘์€ ๊ฑธ์Œ์ด๋ผ๋„ ๊พธ์ค€ํžˆ

0๊ฐœ์˜ ๋Œ“๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด