Controller
ㅡ MVC 디자인 패턴에서 Controller에 해당
ㅡ View와 Model의 접점
ㅡ Client의 Request에 따라 모델의 상태 변경
ㅡ Request URL의 end point에 해당하는 메서드 실행
ㅡ End point에 대한 Routing을 담당
ㅡ Service의 결과를 Client에게 Response
*Controller는 베이스 패키지에 생성
@RestController
ㅡ JSON 형태의 Response를 반환하기 위한 Controller임을 명시
ㅡ REST API 개발을 위해 사용
ㅡ @Controller + @ResponseBody의 형태
* react의 route와 비슷?
@GetMapping(path)
ㅡ REST API의 GET method를 이용한 Request 중 'path'에 해당하는 end-point에 대한 라우팅 담당
ㅡ HTTP 메서드 중 GET 방식의 요청에 대한 처리를 지정할 때 사용
@RequestMapping(pattern)
ㅡ Request URL에서 특정 패턴 Request를 담당하는 Controller임을 명시
ㅡ 해당 클래스를 특정 Request URL 패턴에서 사용하도록 지정
@PostMapping(Path)
ㅡ REST API의 Post method를 이용한 Request 중 'path'에 해당하는 end-point에 대한 라우팅 담당
→ (같은 말) HTTP 메서드 중 POST 방식의 요청에 대한 처리 지정
ㅡ 브라우저 상에선 GET 방식만 가능하기에 POST 방식은 postman을 설치 후 서버 실행시키고 사용
++
@PutMapping(path) / @PatchMapping(path) / @DeleteMapping(path)
@PathVariable(path)
ㅡ https://host:port/path/{data} 형태로 데이터를 받아오기 위한 어노테이션 / path의 일종으로 필수 입력
ㅡ GET / DELETE 방식에서 사용
ㅡ URL Path로 클라이언트로 부터 데이터를 받아서 변수로 사용 / {}안 이름과 PathVariable 안에 이름은 같아야 한다.
@Autowired
ㅡComponent 등록이 되어있는 클래스의 생성 작업을 스프링이 처리
@RequestBody
ㅡ JSON 형태의 Request Body 데이터를 Java 객체로 변환해주는 어노테이션
//? 해당 클래스 REST API로 사용되는 Controller로 지정할 수 있음
//? Controller = react의 route와 비슷
@RestController
//? 해당 클래스를 특정 Request URL 패턴에서 사용하도록 지정
@RequestMapping("apis") //? 먼저 사용?
public class MainController {
//? @Autowired
//? @Component 등록이 되어 있는 클래스의 생성 작업을 스프링이 알아서 처리
@Autowired
private MainService mainService;
//? HTTP 메서드 중 GET 방식의 요청에 대한 처리를 지정할 때 사용
@GetMapping("/")
public ResponseDto<String> getMain() {
ResponseDto<String> result = mainService.getMain();
return result;
}
//? PathVariable(path) : GET / DELETE 방식에서 사용할 수 있음
//? URL Path로 클라이언트로부터 데이터를 받아서 변수로 사용할 수 있게 함
@GetMapping("/variable/{data}") //? 중괄호 안 이름과 PathVariable 안에 이름은 같아야 한다.
public ResponseDto<String> getVariable(@PathVariable("data") String data) {
ResponseDto<String> result = mainService.getVariable(data);
return result;
}
//? HTTP 메서드 중 POST 방식의 요청에 대한 처리 지정
//? 브라우저 상에선 GET 방식만 가능 → Post 방식은 postman 다운받아서 사용 (사용하려는 서버 켜져 있어야 됨)
@PostMapping("/")
public ResponseDto<String> postMain() {
ResponseDto<String> result = mainService.postMain();
return result;
}
//? @RequestBody : POST / PATCH 방식에서 사용할 수 있음
//?? 클라이언트로 부터 request body로 데이터를 받고자 할 때 사용
@PostMapping("/requestBody")
public ResponseDto<String> postRequestBody(@RequestBody String data ) {
ResponseDto<String> result = mainService.postRequestBody(data);
return result;
}
//? HTTP 메서드 중 PATCH 방식의 요청에 대한 처리를 지정할 때 사용
@PatchMapping("/")
public ResponseDto<String> patchMain() {
ResponseDto<String> result = mainService.patchMain();
return result;
}
//? HTTP 메서드 중 DELETE 방식의 요청에 대한 처리를 지정할 때 사용
@DeleteMapping("/")
public ResponseDto<String> deleteMain() {
ResponseDto<String> result = mainService.deleteMain();
return result;
}
//? request body 혹은 response body로 객체를 담을 때는 Dto를 사용해서 전송 혹은 수신
@PostMapping("/test")
public ResponseDto<String> postTest(@Valid @RequestBody PostTestRequestDto requestBody) {
ResponseDto<String> result = mainService.postTest(requestBody);
return result;
}
@GetMapping("/test")
public ResponseDto<GetTestResponseDto> getTest() {
ResponseDto<GetTestResponseDto> result = mainService.getTest();
return result;
}
}
DTO
ㅡ Data Transfer Object
ㅡ 계층 간 데이터 전송을 위한 객체
ㅡ getter / setter / toString 메서드를 포함하고 있는 클래스
++
@Data
ㅡ @Getter, @Setter, @ToString 등 여러 어노테이션이 합쳐진 어노테이션
@NoArgsConstructor
ㅡ 매개변수가 없는 생성자를 작성해주는 어노테이션
@AllArgsConstructor
ㅡ 모든 멤버변수를 매개변수로 받는 생성자를 작성해주는 어노테이션
'Spring' 카테고리의 다른 글
JPA (0) | 2023.03.06 |
---|---|
Service (0) | 2023.03.06 |
Spring 개발환경 세팅 (이클립스, VSCode) / Build, Gradle (2) | 2023.03.03 |
DI & IoC (0) | 2023.03.03 |
Spring 프레임워크 (0) | 2023.02.28 |
댓글