inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

전송 방식

범위 전송 질문입니다.

244

백엔드개발자

작성한 질문수 13

0

안녕하세요 선생님. 항상 좋은 강의 잘듣고 있습니다

POST 같이 리소스 생성하는 곳에 범위전송을 걸면 중복으로 리소스 생성이 요청이되서 GET,PUT 같이 멱등성이 만족하는 메서드에만 써야될거 같은데 제가 생각한게 맞나요?

network

답변 1

5

OMG

안녕하세요.

답변 드리기에 앞서 '범위 전송'이라는 용어가 애매하게 다가오는데요, 저는 '범위 전송' 이라는 용어 대신 '중복 요청'으로 바꿔서 설명드릴게요. 

제가 하는 설명이 틀렸다거나 말씀하신 '범위 전송'과 연관지어 답변이 필요하신 댓글 남겨주세요!영한님 께서  답변 남겨주실 것 같습니다.

,

POST 같이 리소스 생성하는 곳에 범위전송(*중복 요청*, *지속적인 반복 요청*)을 걸면 중복으로 리소스 생성이 요청이되서

=> 맞습니다. 예를 들어, 우리가 일반적으로 회원가입 혹은 상품 주문과 같은 데이터를 DB에 저장하는 요청의 경우 "POST" method를 사용합니다. 

GET,PUT 같이 멱등성이 만족하는 메서드에만 써야될거 같은데 제가 생각한게 맞나요?

=> 이 부분은 실제 저장에 관련한 처리를 해당 "POST" 요청에서 처리하고 "Redirect"를 호출하여 다시 저장 관련된 POST요청을 처리하게 끔 하는 것이 아니라 조회 화면으로 넘어가게끔 처리합니다.

예를 들어 볼게요, 인프런 회원가입 페이지에서 [가입] 버튼을 누르고 새로고침을 계속 요청하게 되면 동일한 데이터가 서버에 저장 될텐데요, 하지만 POST 요청 후 다시 POST 요청으로 넘어가는 것이 아니라 회원 가입 완료 되면 홈페이지 메인 화면으로 돌아가도록 처리한다면 [GET 요청으로 넘어가게끔] 이러한 문제가 발생하지 않을 것입니다.

이와 관련하여 'PRG패턴(Post-Redirect-Get)' 이라고 검색하시면 많은 자료들이 나올 것이고 스프링 완전 정복 시리즈에서 HTTP 이후 강좌인 스프링 MVC1편 강좌 에서 자세히 알려주시니 참고하세요^^ 

,

글 로만 설명 드린 거 같아 코드 예시도 첨부합니다^^ 

강의 명이 모든 개발자를 위한 HTTP인 만큼 닉네임인 백엔드개발자님이 자바, 스프링 개발자가 아닐 수도 있지 않을까 하여 한글 의사코드(Pseudo 코드) 작성해보았습니다.

@Post("/회원가입")
회원가입(회원, 에러정보) {

if (에러정보.에러가_존재하나요()) {
return "회원가입 페이지"; // 회원가입 페이지로 이동, 유효성 검사를 진행 하여 문제 발생 여부 확인
}
DB.save(
회원);
return "redirect:/메인화면"; // 회원을 저장하였다면 redirect를 하여 '/메인화면' 으로 이동하도록 구현
}

캐시 관련 질문입니다.

0

630

1

ETag 질문입니다.

0

740

1

캐시의 설정 주체

0

541

1

영속쿠키 질문입니다.

0

517

1

협상(accept-language)

0

696

1

에러 코드의 구현 주체

0

443

1

웹서버가 구현?

0

600

1

필수헤더?

1

565

1

Host와 Port

0

782

1

다른 도메인이 같은 포트를 사용하는 경우

0

1267

1

표준 헤더와 임의 헤더

0

538

1

POST 등록 후 Location 헤더

0

576

1

프로세스의 상태가 변경되는 경우에 Post 사용

1

1817

1

지속연결에 대해서.

0

698

1

제가 아는 쿼리 파라미터 개념이 맞는지 확인 부탁드립니다.

0

599

1

캐시 내용중 no cache 일때

0

366

1

DNS 서버 관련 질문

1

755

1

캐시로 저장된 파일의 유효기간은 얼마나 되나요?

0

670

1

웹브라우저 요청흐름 질문입니다.

0

853

1

캐시 무효화 질문드립니다

0

565

1

리다이렉트와 리다이렉션 차이?

0

2646

1

쿠키 및 세션 관련 질문드립니다

0

595

1

HTTP 메서드 ( HTTP 메서드의 속성 파트 ) 강의의 멱등 내용에 대하여 질문드립니다.

0

1654

1

header 나 gzip으로 데이터 보낼떄 데이터는 base64로 인코딩되서 가는 건가요?

0

486

1