MenteeMyPageController에서 데이터 전송(백엔드 -> 프론트)을 하려고 한다
@RestController
@RequiredArgsConstructor
@RequestMapping(value = "/usr/mypage", consumes = APPLICATION_JSON_VALUE, produces = APPLICATION_JSON_VALUE)
@Tag(name = "MenteeMyPageController", description = "개인정보조회, 개인정보수정, 수강중인 클래스 정보 제공 기능을 담당")
public class MenteeMyPageController {
private final MenteeMyPageService menteeMyPageService;
@Operation(description = "개인정보조회", security = @SecurityRequirement(name = "bearerAuth"))
@GetMapping(value = "/info")
public ResponseEntity<RsData<MemberResponse>> menteeInfo(@Parameter @Valid MemberEmailRequest request) {
MemberDto memberDto = menteeMyPageService.findByEmail(request.getEmail());
return Ut.sp.responseEntityOf
(RsData.successOf(new MemberResponse(memberDto)));
}
백엔드와 프론트는 HTTP 통신을 통해 데이터를 주고 받으므로
백엔드 컨트롤러에서 ResponseEntity를 통해 감싸서 데이터를 전송한다
@Operation(description = "개인정보조회", security = @SecurityRequirement(name = "bearerAuth"))
@GetMapping(value = "/info")
public ResponseEntity<RsData<MemberResponse>> menteeInfo(@Parameter @Valid MemberEmailRequest request) {
MemberDto memberDto = menteeMyPageService.findByEmail(request.getEmail());
return Ut.sp.responseEntityOf
(RsData.successOf(new MemberResponse(memberDto)));
}
RsData<MemberResponse>
RsData로 MemberResponse를 감싼 이유는
다음과 같은 세가지의 데이터로 Response를 받기 위함이다.
public class RsData<T> {
private String resultCode;
private String msg;
private T data;
Swagger를 통해 테스트하였으며
다음은 Swagger를 통한 테스트 화면이다
아직 DB에 role 등등의 데이터를 넣지 않았기 때문에
Responses에서 role 값이 Mentor로 나온다.
에러1: Responses에서 success, fail 둘다 true로 나온다.
에러2: Swagger Execute을 했을 때 415 에러발생
에러 해결은 다음 글에서 알 수 있다
[REST API Client] Swagger doc 다른 서버 추가하는 방법:
댓글