본문 바로가기
반응형
Spring/REST API

Spring REST API 백엔드에서 프론트로 데이터 전송

by brightGarden02 2022. 12. 1.

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 에러발생

 

 

 

 

에러 해결은 다음 글에서 알 수 있다

https://brightgarden02.com/entry/Error-resolved-orgspringframeworkwebhttpmediatypenotsupportedexception-content-type-not-supported-Error-response-status-is-415

 

Error: resolved [org.springframework.web.httpmediatypenotsupportedexception: content type '' not supported, Error: response stat

에러 resolved [org.springframework.web.httpmediatypenotsupportedexception: content type '' not supported 해결방안 @GetMapping 괄호 안에 consumes = ALL_VALUE 추가 @Operation(description = "개인정보조회", security = @SecurityRequirement(nam

brightGarden02.com

 

 

 

[REST API Client] Swagger doc 다른 서버 추가하는 방법:

https://brightgarden02.com/entry/Swagger-doc-%EB%8B%A4%EB%A5%B8-%EC%84%9C%EB%B2%84-url-%EC%B6%94%EA%B0%80-Java-Spring

 

[REST API] Swagger doc 다른 서버 url 추가 - Java Spring

Swagger로 다른 서버에 request를 보내서 response를 받는 테스트해야할 때가 있다. OpenApiConfig 클래스를 만들고 ArrayList에 새로운 서버를 넣으면 된다. @Configuration public class OpenApiConfig { @Bean public OpenAPI o

brightGarden02.com

 

댓글


반응형
반응형