인프런 커뮤니티 질문&답변

김동현님의 프로필 이미지
김동현

작성한 질문수

모든 개발자를 위한 HTTP 웹 기본 지식

3xx - 리다이렉션2

Java 코드로 307 Redirect로 본문 유지 하는 방법?

해결된 질문

작성

·

1K

·

수정됨

2

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
저는 평소에 클라이언트에서 받은 요청 내용을 기억해서 (예를 들어 체크박스 표시한 list와 함께 다음페이지로 이동) 다른 URL에서 처리하기 위해 Forward를 사용한 경험이 있고, 요청 내용을 기억하나 못하나로 Redirect와의 차이라고 생각했습니다.

근데 이 강의를 통해 307 요청 내용을 기억하는 방법도 있다는 것을 보고, 흥미를 가져 http 응답의 start-line을 임의로 변경해서 바디를 유지해보고 싶단 생각이 들었지만, 일반적으로 redirect 시 302 코드만 보였고 307로 임의로 바꾸는 방법은 제 지식의 한계상 검색 범위가 좁아서 안나오더군요...

물론 당연히 실무에 필요한 방법은 아니겠지만! 서버에서 HTTP 메소드인 GET POST 등 지정할 수 있듯이 HTTP의 상태코드를 지정할 수 있나 궁금해서 물어봅니다!

답변 1

3

안녕하세요. 김동현님, 공식 서포터즈 OMG입니다.
.

package com.example.demo;

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;

@Controller
public class TestController {
    
    @ResponseStatus(HttpStatus.TEMPORARY_REDIRECT)
    @GetMapping("/test")
    public String test() {
        return "redirect:/307";
    }

    @GetMapping("/307")
    @ResponseBody
    public String redirect() {
        return "ok";
    }
}

image

@ResponseStatus 어노테이션을 이용한 응답코드 반환하는 방법입니다.

 

localhost:8080/test -> localhost:8080/307 (TEMPORAY_REDIRECT : 307)

localhost:8080/307 -> "ok" 문자열 리턴

위 흐름으로 진행된다고 보시면 될 것 같습니다.

 

image
.
감사합니다.

김동현님의 프로필 이미지
김동현
질문자

아는 만큼 보인다고... ResponseStatus 어노테이션이 있었군요! 빠른 답변 감사합니다!

김동현님의 프로필 이미지
김동현

작성한 질문수

질문하기