상세 컨텐츠

본문 제목

[SI에서 살아남기] 내맘대로 RestController의 역할 및 간단한 예시

SI에서 살아남기/Spring

by 주관적인 2020. 5. 7. 23:24

본문

백엔드 비즈니스 로직 전체 구조

Model: controller, Service, Mapper/Repository 와의 상호 작용

RestController : Service와 상호작용

Service: Mapper, Reopstiory와 상호작용

Mapper/Reopstiory: SqlSesion 및 DB와 상호작용

 

RestController

  • controller와는 다르게 RestController는 요청된 결과를 반환시 ResponseEntity를 반환함.
  • 요청받은 내용에서 서비스를 호출하여 실행 후 그 결과를 전달해주는 역할을 함.
  • 주요한 로직은 모두 서비스에서 처리함.

*ResponseEntity는 HttpStatusCode,Headers,Body로 구성되어 Json 형식으로 반환함.

 

알아두어야 하는 어노테이션

구성요소

설명

@RestController

@Controller 어노테이션과 @ResponseBody 어노테이션을 합쳐놓은 어노테이션. 클래스 상단에 @RestController 어노테이션을 선언하면 Method마다 @ResponseBody를 붙여 주지 않아도 됨.
@ResponseBody= 메소드 위에 작성하게 되면
Return 값이 페이지가 아닌 html body로서 받음
@controller= xml에 <component-scan ~/> 작성시 빈 객체 자동 생성하여 사용가능

@PathVariable

URL에 변수값을 전달받음
ex) @RequestMapping("/aa/{num}")
public void A(@PathVariable(value="num") int num )
-작성시 URL 변수값을 메소드 매개변수로 전달
*단) 변수값이 null이면 에러 

@RequestParam

URL에 파라미터 값을 전달받음
ex) @RequestMapping("/aa")
public void A(@RequestParam(value="num") int num )
-작성시 URL 파라미터 값을 메소드 매개변수로 전달 
*단) 파라미터가 null이면 에러

@RequestBody

@ResponseBody와는 정반대로 리턴이 HTML Body가 아닌 전달받은 값이 HTML Body

* 알고 있는 어노테이션은 죄다 적지 않았습니다.. 지송해욤

 

 

알아 두어야 하는 클래스 및 메서드

ResponseEnity<Type>

메서드 내용
ok() Http status code 값을 200으로 변경
header(content Type 등등) Http Header Type 값을 메소드 매개변수 값으로 변경
body(Type) Type을 HTML Body 값으로 변경

 

Example)

 

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
@RequestController("animalController"
@RequestMapping("animal")
publicc class AnimalController
{
    @Autowired
    private AnimalService animalService;
    
    //동물 전체 조회
    @GetMapping("/animals"// get방식 접근일시
    public ResponseEntity<List<Animal>> getAnimals(){
        List<Animal> animals=animalService.getAnimals();
        return ResponseEntity.ok().body(animals);
    }
    //동물 신규 등록
    @PostMapping("/animal"// post방식 접근일시
    public ResponseEntity<String> createAnimal(@RequestBody Animal animal){
        return ResponseEntity.ok().body(animalService.createAnimal(animal));
    }
    //동물 선택 수정
    @PutMapping("/animal"// put 방식 접근일시
    public ResponseEntity<Intger> updateAnimal(@RequestBody Animal animal){
        //단 requestbody의 값은 json 형식이므로 animal을 파싱해주는 메서드가 필요함.  
        Integer count=fuelService.updateAnimal(animal); //업데이트 된 컬럼 수 count 저장
        return ResponseEntity.ok().body(count);
    }
}
cs

 

Model에 관하여?

 

Service에 관하여?

 

전체 비즈니스 로직 보기

 

 

 

본 글은 다소 주관적인 생각들을 포함하고 있어, 잘못된 정보를 제공할 수도 있습니다. 부족한 점이 있으면 댓글 남겨주세요. 추가 및 수정 하도록 하겠습니다. 감사합니다.

관련글 더보기

댓글 영역