반응형
@RestController
@Controller + @ResponseBody
클래스 레벨에 작성하며 해당 클래스 내 모든 핸들러 메소드에 @ResponseBody 어노테이션을 묵시적으로 적용한다는 의미
ResponseRest
1. 문자열 응답
@RestController
@RequestMapping("/response")
public class ResponseRestController {
@GetMapping("/hello")
public String helloworld() {
return "hello world";
}
}
POSTMAN으로 확인
2. 기본 자료형 응답
@RestController
@RequestMapping("/response")
public class ResponseRestController {
@GetMapping("/random")
public int getRandomNumber() {
return (int) (Math.random() * 10) +1;
}
}
POSTMAN
3. Object 응답
ResponseRestController
@RestController
@RequestMapping("/response")
public class ResponseRestController {
@GetMapping("/message")
public Message getMassage() {//Message 임포트x, Message class 생성해서 인자 전달하기
return new Message(200, "메세지를 응답합니다");
}
}
Message class
package com.greedy.api.section01.response;
public class Message {
private int httpStatusCode;
private String message;
public Message() {}
public Message(int httpStatusCode, String message) {
super();
this.httpStatusCode = httpStatusCode;
this.message = message;
}
public int getHttpStatusCode() {
return httpStatusCode;
}
public void setHttpStatusCode(int httpStatusCode) {
this.httpStatusCode = httpStatusCode;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
@Override
public String toString() {
return "Message [httpStatusCode=" + httpStatusCode + ", message=" + message + "]";
}
}
POSTMAN
4. List 응답
@RestController
@RequestMapping("/response")
public class ResponseRestController {
@GetMapping("/list")
public List<String> getList { //배열 형태로 응답
return List.of(new String[] {"사과", "바나나", "복숭아"});
}
}
POSTMAN
반응형
5. Map 응답
@RestController
@RequestMapping("/response")
public class ResponseRestController {
/* 3번에서 생성한 Message를 리스트 타입으로 선언 후 응답코드와 메세지 작성해서 추가한다
-> Map으로 변환할 때 응답 코드가 key, Message가 value 로 설정 */
public Map<Integer, String> getMap() { //객체 값으로 응답
List<Message> messageList = new ArrayList();
messageList.add(new Message(200."정상 응답");
messageList.add(new Message(404,"페이지를 찾을 수 없습니다"));
messageList.add(new Message(500,"개발자의 잘못입니다"));
return messageList.stream().collect(Collectors.toMap(Message::getHttpStatusCode, Message::getMessage));
//Message 객체의 응답 코드, 메세지를 key와 value로 정해서 리턴
}
}
POSTMAN
6. ImageFile 응답
produces 설정을 해주지 않으면 text/html 로 응답하기 때문에 이미지가 텍스트 형태로 전송 된다.
produces 설정은 response header의 content-type 설정이다.
@RestController
@RequestMapping("/response")
public class ResponseRestController {
@GetMapping(value ="/image", produces=MediaType.IMAGE_JPEG_VALUE) //응답 타입을 이미지로 설정
public byte[] getImage() throws IOException{
return getClass().getResourceAsStream("/com/greedy/api/section01/response/images.jpg").readAllBytes();
//읽어온 파일의 바이트들을 바이트 배열로 반환하겠다.
}
}
POSTMAN
7. ResponseEntity를 이용한 응답
@RestController
@RequestMapping("/response")
public class ResponseRestController {
@GetMapping("/entity")
public ResponseEntity<Message> getEntity(){
return ResponseEntity.ok(new Message(123,"hello world"));
}
}
POSTMAN
반응형
'프로그래밍 > Spring & Spring boot' 카테고리의 다른 글
[Spring boot] RESTAPI _ 04 Exception & validation(데이터 검증) (0) | 2022.11.03 |
---|---|
[Springboot] RESTAPI_03 ResponseEntity (0) | 2022.11.03 |
[Spring boot ] REST API - 01 REST API & POSTMAN (0) | 2022.11.02 |
[Springboot / 스프링부트] thymeleaf (3) 타임리프 th:with, Spring EL, 속성값 설정 (1) | 2022.09.26 |
[Springboot / 스프링부트] thymeleaf (2) 타임리프 제어문 (0) | 2022.09.26 |