Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

coyojo10의 개발블로그!

[개인 프로젝트 ] Controller 코드구현 관련 지식 본문

카테고리 없음

[개인 프로젝트 ] Controller 코드구현 관련 지식

coyojo 2023. 4. 18. 11:32

💡 1. Controller란? 

 Controller는 API 호출이 오면 가장 먼저 들어오는 곳이다.
배정된 URL에 따라 그 로직을 처리하는 메서드가 호출이되고, 그 밑에 있는 Service 레이어를 호출한다.
Service에서 로직 처리가 완료되면 반환해야 할 값이 있다면 Service에서 받아서 Cilent로 Response를 돌려준다.

출처 : kyle Jung

☝1.1 Url 매핑과 HTTP 메서드 세팅

 메서드 위에 @RequestMapping 어노테이션 안에 value, method 입력값으로 정의한다.

  • value = “url”매핑 
  • method = “HTTP method”

예) @RequestMapping(value="/photo/upload", method = RequestMethod.POST)

 

 

 

☝1.2 Controller에서 Client로부터 입력랎을 받는 방법

Client에서 API 요청을 보낼 때 다양한 방법으로 입력 값을 넣을 수 있고, Controller에서 각각 다르게 처리한다.

 

 

 

☝1.3 Controller에서 Client로 데이터를 출력하는 방법

데이터를 Clinet로 출력할 때는 항상 Http Response의 Body를 통해서 한다.

 

Controller 메서드에서 ResponseEntity라는 클래스를 사용한다.

 

ResponseEntity는 API의 응답데이터를 포함하고 있기 때문에 다음과 같은 것을 포함하고 있다.

  • HttpBody
  • HttpStatus
  • HttpHeaders
구현 예시 
1) PathVariable
@RequestMapping(value = "/{albumId}",method = RequestMethod.GET)
public ResponseEntity<AlbumDto> getAlbum(@PathVariable("albumId") final long albumId ) {
AlbumDto albumDto = albumService.getAlbumById(albumId);
return new ResponseEntity < > (albumDto, HttpStatus.OK);   
 }

2) Query String 

@RequestMapping(value = "/query",method=RequestMethod.GET)
public ResponseEntity<AlbumDto> getAlbumByQuery(@RequestParam final long albumId){
AlbumDto album = albumService.getAlbum(albumId);
return new ResponseEntity< > (albumService.getAlbum(albumId),HttpStatus.OK); }


3) Json 

@PostMapping("/json_body")
public ResponseEntity<AlbumDto> getAlbumByJson(@RequestBody final AlbumDto albumDto){
AlbumDto album = albumService.getAlbum(albumDto.getAlbumId());
return new ResponseEntity<>(album,HttpStatus.OK);}



  • 메서드 출력 타입을 ResponseEntity<T> - T 안에 출력할 Dto 클래스를 넣어준다.

       -  위 메서드는 AlbumDto 클래스 안에 정의한 필드를 JSON 형태로 변환하여 출력한다.

  • AlbumService 에서 출력받은 AlbumDto 파일을 위와 같이  ResponseEntity에 실어주고,HpptSataus.OK 와 함께 Return 해준다.

 

💡 2. Controller 구현 정리  

 

  • @RestController 어노테이션을 사용하면 해당 클래스가 Spring 에서 관리하는 Controller라는 것을 나타내고, Rest API 목적으로 사용할 것임을 나타낸다.
  • @RequestMapping 은 해당 컨트롤러가 처리할 URL 경로의 앞부분을 나타냅니다.
    • 위에 파일에서는 https://<url>**/albums** 으로 들어오는 모든 요청은 해당 컨트롤러의 메서드에서 처리하게 됩니다.