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

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

Kevin님의 프로필 이미지
Kevin

작성한 질문수

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

안녕하세요. POST,GET 방식 url설정 관련

작성

·

422

0

안녕하세요.
 
64강 상품등록폼 강의이고, 상품등록 혹은 삭제 등 onclick 쪽 혹은 그 후의 동작들에대한 url설정을 하는 내용입니다.
 
1.
상품 등록시에는 GET방식으로 호출을 받아보고, 등록버튼을 누른 후에는 POST로 다르게 받아본다고 하시고
 
<form action="item.html" th:action="/basic/items/add" method="post">


th:action 뒷부분을 생략해도 된다고 하셨습니다. 왜냐하면 add에서 버튼을 누르고 나면 그 위치가 add이기 때문에 그대로 남아있을 거라고 해서요.. 근데 제가 지우지 않고 위와같은 코드로 프로그램을 돌려보니 화면이 안떠져서 f12를 눌러보니 500에러가 떠있더라구요.
위와같이 적는게 맞는건지(제가 500번 에러가 종종 뜨는것같아서 위 코드에 문제가 없으면 스킵해야할 것 같아요..) 한번 짚어주시면 감사하겠습니다.
 
2.
그리고 궁금한게 한가지 더 있는데 상품 취소를 누르고 http://localhost:8080/basic/items 로 되돌아 가는거나 그냥 items
상품목록을 누르고 http://localhost:8080/basic/items로 되돌아가는거나 둘다 GET방식인데
 
add창에 GET방식으로 들어가고 add버튼을 눌르고 저장시킨후 POST방식으로 서로 다르게 호출하는지가 조금 이해가 잘 되지 않습니다.
똑같이 생각하면 그냥 GET방식으로 호출해도 문제가 없을 것 같은데 해보면 오류가 나네요..
 
add전후의 다름을 표시해주기 위함인건지 같은주소->같은주소는 충돌이 일어나는건지, 궁금합니다..!
 
 
 

답변 1

0

안녕하세요, 님! 공식 서포터즈 codesweaver 입니다.

1. 500에러는 백엔드 코드에 오류가 있을때 발생하는 오류입니다. 전체적인 자바 코드에 오류가 있는지 확인해보셔야 해요.

2. get과 post일 때 백엔드의 처리가 달르기 때문에 구분해서 사용하는 것입니다. /basic/items/add 라는 경로는 같지만 폼을 get으로 전송하는가 post로 전송하는가에 따라  컨트롤러의 어느 메소드에 연결될지 갈립니다. 

@PostMapping(...) @GetMapping(...)  어느 프로세스를 선택할 것인가!

감사합니다.

Kevin님의 프로필 이미지
Kevin
질문자

답변감사합니다.  1. 코드에 이상이 있어보이진 않습니다. 두번 진행하는 수업이기도하고 진행이 얼마되지 않아서 코드를 확인해봤는데 이상은 없네요.  그리고 1번질문은 위에 질문드린것과 같이 생략가능한 코드에서 생략을 하면 실행이되고 생략을 안해도 무방한데 생략을 안하고 그대로 적으면 왜 실행이 안되는지가 궁금합니다.(코드엔 이상이 없어요.)

2. post방식 get방식이 서로 다른건 알겠는데   강의에서 post를 쓴걸 get으로 하면 안되는 이유가 어떻게 될까요?

(리다이렉트하고 관련이 잇는걸까요..?)

시간내주셔 감사합니다!

안녕하세요 영님!

1. 폼에서 액션 값을 생략하면 자기자신을 의미합니다. 즉 폼 내역을 자기자신(=현재URL) 으로 전달합니다. 그런데 액션 값을 명시하면 문제가 발생하는 상태이니, 액션에 지정한 URL 경로에 문제가 있는것으로 추정할수 있는데요. 가능하시다면 전체 코드를 구글드라이브에 올려 공유해주시면 원인을 찾는데 도움이 될 것 같아요.

 

2. 만약 상품등록(add) 폼의 타입을 get 으로 전달할 경우, 상품등록은 실행되지 않을것이고, 상품등록 화면으로 다시 이동하겠지요? 그런데 이 과정이 제대로 처리 되지 않는다면 컨트롤러 코드를 살펴보아야 할것 같아요.

 

감사합니다.

Kevin님의 프로필 이미지
Kevin
질문자

그쵸 자기자신인데.. 분명 같은데 말이죠.. 아무리봐도.. 

이번 실습예제 베이스삼아서 date넣은  todolist를 만들면서 코드를 하나하나 뜯어 맛보고 있는데,

해당 부분 또 문제있게되면 질문드리겟습니다! 감사합니다~!

Kevin님의 프로필 이미지
Kevin

작성한 질문수

질문하기