인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

Yong D님의 프로필 이미지
Yong D

작성한 질문수

스프링 웹 MVC

모든 요청 URI 조작한후(?) 리다이렉트 하기

작성

·

469

0

[단순 요청 코드]
mockMvc
.perform(.get("/members/all/")); // MemberController에 있는 핸들러 매핑
mockMvc.perform(.get("/members/meber/5/"));
mockMvc.perform(.get("/articels/all/")); // ArticleController에 있는 핸들러 매핑
mockMvc.perform(.get("/articles/article/5/"));

[질문]
백선장님 위와 같은 요청을 Client에서 보낼때
요청 URI 마지막에 있는 슬래시(/)를 일괄적으로 없애고 보내고 싶을때는 어떻게 해야하나요??

마지막 슬래시(/)를 없애고 싶은 이유는
"REST 규칙: URI 마지막 문자로 슬래시(/)를 포함하지 않는다" 때문입니다

하지만 많은 유저들이 이런 규칙을 모르기 때문에 Redirect를 해주고 싶습니다

답변 2

0

Yong D님의 프로필 이미지
Yong D
질문자

답변 감사합니다

제 질문은 예를 들어서 아래 두 URI가 있을때 

https://www.inflearn.com/

https://www.inflearn.com

REST 원칙에 따르면 위 두개의 주소로 접속하면 서로 다른 리소스를 보여줘야 되는데
일반 사용자들은 두개가 서로 다르다는 사실을 모르니깐 
많은 회사들이 융통성있게  첫번째 주소를 두번쨰 주소로 리다이렉트 한다고 책에서 봤습니다

근데  모든 URI를 하나하나 리다이렉트 하는건 별로라고 생각했고 일괄적으로 처리할 수 있는 방법이 있나해서 질문드렸습니다

0

백기선님의 프로필 이미지
백기선
지식공유자

질문을 잘 이해를 못했는데요. 요청을 보내는 쪽에서 "/"로 끝내는 요청을 만들어 보내는걸 서버쪽에서 컨트롤 할 수는 없어요. 이미 서버로는 들어왔고 "/member/all" 로 맵핑해둔 핸들러 안에 들어왔겠죠.

맵핑이 되더라도 굳이 "/"를 없애고 싶다면 HandlerInterceptor를 만들어서 요청 URL을 수정해도 될꺼 같구요.

살짝 구글링을 해봤는데 비슷한 질문과 답이 보이네요. 참고하세요.

https://stackoverflow.com/questions/8711392/how-to-redirect-urls-with-trailing-slash-to-the-corresponding-ones-without-it

Yong D님의 프로필 이미지
Yong D

작성한 질문수

질문하기