프로그래밍/Spring & Spring boot

[Spring boot] RESTAPI_02 Response

pupu91 2022. 11. 3. 16:51
반응형

@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

반응형