메모장

Spring Controller - Post Request & URL Response 본문

공부/Spring-Study

Spring Controller - Post Request & URL Response

aeomhs 2019. 8. 3. 19:40

지금 예제를 만들고 있는 것이,

회원가입 & 로그인 페이지를 만들어보고 있다.

 

예제 코드를 잘 정리해 놓은 사이트가 많아서 어렵지는 않았지만,

문제는 그냥 따라하는 것이 내 성격이랑 좀 안맞는다고 해야하나,

물론, 너무너무 마음에 꼭 드는 예제는 곧잘 따라하기도 하지만,

뭔가... 내가 추구하는 방향이랑 조금이라도 어긋나면 변형을 시도하고자 한다.

 

그래서 발생했다. 문제가!

 

우선 백엔드 (컨트롤러 - 서비스로직 - 모델)의 경우는 금방 해결되었다.

MVC 공부를 하면서 각 역할이나 로직에 대해서 어느정도 이해해서인지,

여러 예제 코드를 참조하면서 적당히 내 프로젝트에 맞게 변형해보았다.

 

문제는 컨트롤러에서 Request와 Response를 처리하는 것에 아직 공부가 부족한 것 같다.

@ResponseBody @RequestBody를 언제 붙여야하며,

이때 각각 return 값은 어떻게 처리되는지,

return type은 어떤 형태일때 어떻게 넘겨주는지,

찾아보면서 하긴했는데, 스스로도 정리가 필요한 것 같다.

 

또, 프론트도 같이 해야하다보니, Ajax에 대한, 아니 javascript도 옛날 기억을 더듬으면서 해보는데 

역시나, 너무 서툰 느낌이 든다. 근데 그래도 시간이 오래걸릴뿐, 어렵게 느껴지지는 않아 다행이다.

 

한참 해멨던 부분이

"회원가입 요청"은 @PostMapping 인데, 이때 컨트롤러에서 그 다음 주소값을 넘겨주는 것을 구현해보고 싶었다.

@GetMapping은 단순히 Return Type을 String으로 한 뒤, URL만 넘겨주면 해결되는데,

@PostMapping은 자꾸만 뭔가 에러가 난다.

400 에러도 나고(서버 내부), 어떻게 잘 가면 html 문서 내용 자체가 날라간다. (경로가 아니라)

 

일단 해결하긴 했는데,,, 정리가 필요한 것 같다.

왜 이런 문제가 발생했는지, 어떻게 해결했는지 다시 생각해봐야겠다.

@Controller
@RequestMapping("/user")
@AllArgsConstructor
public class MemberController {

    UsersService usersService;

...

    /* User Register */
    @PostMapping("/register")
    @ResponseBody
    public String register(@RequestBody UsersSaveRequestDto dto){
        usersService.save(dto);

        return "/user/login";
    }   
}
$.ajax({
    type: 'POST',				   /* Request Method Type */
    url: '/user/register',		      /* Request URL */
    dataType: 'text',			/* Response Data Type */
    contentType:'application/json; charset=utf-8',
    data: JSON.stringify(data)		 /* Request Parameter */
    }).done(function (path) {		 /* path : Response Data */
		location.href = path;
    }).fail(function(error) {		 /* error : Request&Response Error info */
        for(var e in error) {	     /* Error Print */
        console.log("["e+"]:"+error[e]);
    }
});

- 와 이거 너무 미리보기 내용이랑 코드블럭 편집창 내용이랑 작업창에서 보이는 내용이랑 차이가 크다. 딮빡 나중에 수정해야겠다

 


#1

@POST Request를 처리하기 위해서는

@RestController 혹은 @Controller + @ResponseBody 를 활용해야하는 것 같다.

Stackoverflow

 

 

'공부 > Spring-Study' 카테고리의 다른 글

Spring data JPA  (0) 2019.07.29
JSP 개념 잡기[1/N]  (0) 2019.07.24
Servlet 개념 잡기[1/N]  (0) 2019.07.23
MVC 개념 잡기[1/N]  (0) 2019.07.20
스프링 개념 잡기[1/N]  (0) 2019.07.17
Comments