GET/POST 방식

seheeee_97·2023년 11월 28일
0

개인 공부

목록 보기
13/44

GET 방식

@PreAuthorize("isAuthenticated()")
@GetMapping("/modify/{id}")
public String questionModify(QuestionForm questionForm, @PathVariable("id") Integer id, Principal principal) {
        Question question = this.questionService.getQuestion(id);
        if(!question.getAuthor().getUsername().equals(principal.getName())) {
            throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "수정권한이 없습니다.");
        }
        questionForm.setSubject(question.getSubject());
        questionForm.setContent(question.getContent());
        return "question_form";
    }

GET 메서드

이 메서드는 "/modify/{id}" URI에 대한 HTTP GET 요청을 처리합니다.
주로 해당 리소스(질문 수정 페이지)를 보여주는데 사용됩니다.
URL에서 {id}는 경로 변수(path variable)로, 이를 통해 특정 ID의 질문을 식별합니다.
현재 사용자(principal)가 질문의 작성자인지를 확인하고, 작성자라면 질문의 내용을 수정할 수 있는 폼을 보여줍니다.


POST 방식

@PreAuthorize("isAuthenticated()")
@PostMapping("/modify/{id}")
public String questionModify(@Valid QuestionForm questionForm, BindingResult bindingResult, Principal principal, @PathVariable("id") Integer id) {
        if(bindingResult.hasErrors()) {
            return "question_form";
        }
        Question question = this.questionService.getQuestion(id);
        if(!question.getAuthor().getUsername().equals(principal.getName())) {
            throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "수정권한이 없습니다.");
        }
        this.questionService.modify(question, questionForm.getSubject(), questionForm.getContent());
        return String.format("redirect:/question/detail/%s", id);
    }

POST 메서드

이 메서드는 "/modify/{id}" URI에 대한 HTTP POST 요청을 처리합니다.
주로 질문 수정 폼에서 제출된 데이터를 처리하고, 실제로 데이터를 수정하는 로직이 수행됩니다.
먼저 데이터 유효성 검사를 위해 @Valid 어노테이션과 BindingResult를 사용합니다.
데이터가 유효하다면, 현재 사용자가 질문의 작성자인지를 확인하고, 작성자라면 질문의 내용을 수정하고 수정된 질문의 상세 페이지로 리다이렉트합니다.



GET 방식과 POST 방식으로 나누어 사용하는 이유

GET

  • 정보를 조회하고 보여주는 용도로 사용
  • 주로 브라우저에서 주소를 입력하거나 링크를 클릭할 때 발생
  • 여러 파라미터를 조합하여 조회할 경우

POST

  • 서버에 데이터를 제출하고 그에 따른 처리를 요청하는데 사용
  • 주로 폼 데이터를 제출할 때 사용

-> 이러한 구분은 HTTP 메서드의 의미와 RESTful한 아키텍처 원칙을 따름


여러 파라미터를 조합하여 게시물 목록을 조회할 때는 GET 방식을 사용하는 것이 좋은 이유 :
POST 방식은 동일한 POST 요청이 발생할 경우 중복 요청을 방지하기 위해 "만료된 페이지입니다." 라는 오류를 발생시키기 때문
(예 : 2페이지에서 3페이지로 갔다가 뒤로가기를 했을 때 2페이지로 가는것이 아니라 오류가 발생)

0개의 댓글