기억보다 기록을

[Springboot] Instagram clone (3)Controller, http 4가지 요청 방식 본문

Development/Springboot

[Springboot] Instagram clone (3)Controller, http 4가지 요청 방식

juyeong 2022. 7. 2. 14:57
반응형

 

🔻Controller
  • 스프링부트는 서블릿(자바로 웹을 할 수 있는 기술)으로 이루어져있다.
  • 따라서 요청을 할 때마다 자바 파일이 호출된다.
  • 요청의 종류가 3개이면 3개의 JAVA 파일이 필요하다.
  • 하나의 자바 파일에서 모든 요청을 받는 Front Controller를 사용한다.
		로그인 요청          -> login.java
		회원가입 요청        -> join.java
		게시글 쓰기 요청     -> write.java

		=> FrontController.java (여기서 if, else 분기로 나눔)

→ 너무 많은 요청이 한곳으로 모이는 것을 방지하기 위해 도메인(범주) 별로 분기한다.

		User 테이블        ->로그인, 회원가입          -> UserController.java
		Board 테이블       ->글쓰기, 글삭제, 글수정    -> BoardController.java
		Product 테이블     ->상품등록, 상폼목록보기    -> ProductController.java

→ 둘 다 썩 좋은 방식은 아니다.

→ 프론트 별로 나누면서 그 안에서 적당히 도메인별로 나누는 건 어떨까?

→ 요청을 어디로 보내야할지 분기해주는 것은 Dispatcher (Servlet Dispatcher, Request Dispatcher) 이다.

→ 컨트롤러를 잘 다루면 요청에 대한 처리를 잘 다룰 수 있다 😃


🔻http 4가지 요청 방식

클라이언트가 웹서버에 요청 → 웹서버는 DB에 SELECT, INSERT, UPDATE, DELETE 요청을 해서 응답!

→ 이 이유로 일반 컨트롤러때는 “intdex.jsp” → 파일로 리턴, 레스트 컨트롤러 일 때는 데이터 “get 요청됨”로 리턴

 

package com.cos.controllerdemo.web;

import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RestController;

//@Controller
@RestController
public class HttpController {
	
	@GetMapping("/get")
	public String get() {
		return "get 요청됨";
		
	}
	@PostMapping("/post")
	public String post() {
		return "post 요청됨";
	}
	
	@PutMapping("/put")
	public String put() {
		return "put 요청됨";
		
	}
	
	@DeleteMapping("/delete")
	public String delete() {
		return "delete 요청됨";
		
	}
}

 

반응형