seong
Controller 데이터 받기 - JSON, 통신상태 (white 마무리) 본문
첫번째 방법 - 라이브러리 이용해 상태코드 받아보기.
Four.java 작성
package site.metacoding.demo.domain;
import lombok.Getter;
import lombok.Setter;
@Setter
@Getter
public class Four {
private String title;
private String content;
}
FourController.java 작성
package site.metacoding.demo;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import site.metacoding.demo.domain.Four;
@RestController // IOC 컨테이너에 New
public class FourController {
@GetMapping("/four")
public ResponseEntity<Four> getData() {
//1. 오브젝트를 리턴
Four four = new Four();
four.setTitle("Json데이터로 받아보기");
four.setContent("내용입니다.");
//2.데이터가 제대로 전달되었다면 웹의 상태 코드,four의 내용 출력
ResponseEntity<Four> response = new ResponseEntity<>(four,HttpStatus.OK);
return response;
}
}
결과
따로 데이터를 Json으로 바꿔주지 않았다. 하지만 웹에서 확인해본 결과 Json형태로 받아졌고, 상태코드 200도 잘 전달 되었다.
Json으로 바뀐 이유?
DS(Dispatcher Sevlet)에서 Four오브젝트를 리턴 받고, 그 값들을 MessageConverter로 전달해 주기 때문이다.
또한 Json으로 들어온 타입의 데이터를 컴파일해서 넘겨주기도 한다. 즉, 주고/받기가 Json형태로 이루어진다.
두번재 방법 - ResponDto를 작성해 직접 상태코드를 넘겨줘보자.
추가로 해줄 것은 ResponDto를 작성해주면된다.
RespDto
package site.metacoding.demo.white.dto;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public class RespDto<T> {
private Integer code;// 리턴 값이 1이면 성공, -1이면 실
private String msg;// 메세지 성공, 실패 메세지 출
private T body; // body 데이터의 타입을 정확하게 알 수 없기 때문에 T로 추상적으로 준다.
}
FourController.java
package site.metacoding.demo;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import site.metacoding.demo.domain.Four;
import site.metacoding.demo.white.dto.RespDto;
@RestController // IOC 컨테이너에 New
public class FourController {
@GetMapping("/four")
public ResponseEntity<Four> getData() {
//1. 오브젝트 타입으로 리턴
Four four = new Four();
four.setTitle("Json데이터로 받아보기");
four.setContent("내용입니다.");
//2.데이터가 제대로 전달되었다면 웹의 상태 코드,four의 내용 출
ResponseEntity<Four> response = new ResponseEntity<>(four,HttpStatus.OK);
return response;
}
@GetMapping("/four/data")
public RespDto<Four> respData() {
Four four = new Four();
four.setTitle("Json데이터로 받아보기");
four.setContent("내용입니다.");
RespDto<Four> respDto = new RespDto<>(1,"성공", four);
if(respDto.getCode() == 1) {// 만약 1이 아니라면 null반환
return respDto;
}
else {
return null;
}
}
}
결과
이렇게 직접 상태 코드와, 메세지를 직접 만들어서 쓸 수 있다. 하지만 HTTP 프로토콜이 있기 때문에 첫번째 방법을 써주는 것이 대부분이다.
HTTP 응답 상태 코드
- 특정 HTTP 요청이 성공적으로 완료 되었는지 알려주는 코드이다.
간단 하게 정리
응답 상태 | 해석 |
100~ | 요청을 수신했고, 계속 진행 하라는 의미 |
200~ | 요청이 성공적. |
300~ | 요청을 완료 했지만 , 계속 처리중이거나 추가적인 작업이 필요. |
400~ | 클라이언트의 요청이 잘못. |
500~ | 서버쪽에서 오류가 발생. |
더 자세한 응답 상태는 아래에서 확인
'Spring > SpringBoot' 카테고리의 다른 글
Yellow 프로젝트 H2 데이터 연결 , Oracle 연결 (의존성 활용,JPA) (0) | 2022.08.31 |
---|---|
Yellow 프로젝트 초기 세팅 (0) | 2022.08.31 |
Dynamic Project 만들기 (0) | 2022.08.30 |
톰캣 xml 정리 server,context,web (0) | 2022.08.30 |
아파치 톰캣 서버 설치 (0) | 2022.08.30 |