본문 바로가기
스프링 관련/스프링 따라하기

2. Controller Test (Get/Post/Put/Delete)

by 문자메일 2022. 5. 23.

1. controller/test, dto/test, repository, service 패키지 생성하고, TestDto.java, TestController.java 파일 생성 후 아래 코드 참조하여 작성

 

public class TestDto {
    int id;
    String name;
    int age;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "TestDto{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
@RestController
public class TestRestController {

    @GetMapping(value = "/")
    public String getMapping(){
        return "getMapping";
    }

    @GetMapping(value = "/test")
    public String getMapping1(@RequestParam String name, @RequestParam int age){
        return name + " " + age;
    }

    @GetMapping(value = "/test2")
    public String getMapping2(@RequestParam(name = "nickname") String name, @RequestParam int age){
        return name + " " + age;
    }

    @GetMapping(value = "/test3/{id}")
    public String getMapping3(@PathVariable(name = "id") int age){
        return ""+age;
    }

    @PostMapping("/")
    public String postMapping(){
        return "postMapping";
    }

    @PostMapping("/test")
    public String postMapping1(@RequestBody TestDto testDto){
        System.out.println("testDto = " + testDto);
        return testDto.toString();
    }

    @PutMapping("")
    public String putMapping(){
        return "put mapping";
    }

    @DeleteMapping
    public String deleteMapping(){
        return "delete Mapping";
    }
}

 

 

1-1. 위에서 만든 컨트롤러들 Talend API로 테스트 가능

GET | http://127.0.0.1:8081

GET | http://127.0.0.1:8081/test?name=kevin&age=10

  - @RequestParam으로 URI에 전달된 값 받기 가능

GET | http://127.0.0.1:8081/test2?nickname=kevin&age=10

  - @RequestParam(name="nickname")으로 URI에 전달된 값 받기 가능

GET | http://127.0.0.1:8081/test3/10

  - @PathVariable(name="id")으로 URI에 전달된 값 받기 가능

POST | http://127.0.0.1:8081

POST | http://127.0.0.1:8081/test + JSON

  - @RequestBody 로 RequestBody에 JSON으로 전달되는 정보 받기 가능

PUT | http://127.0.0.1:8081

DELETE | http://127.0.0.1:8081

 

 

 

 

2. Spring MVC에서 Controller Annotation

크게 아래 2가지 Controller가 존재한다.

@Controller : 전통적인 MVC 컨트롤러의 @Controller는 주로 View(resource 폴더 하단의 html 파일)를 반환하기 위해 사용한다.

@RestController : @Controller에 @ResponseBody가 추가된 것.

Controller와 달리 Json으로 객체 데이터를 반환하는 목적으로 사용.

최근에 데이터를 응답으로 제공하는 REST API를 개발할 때 주로 사용하며, 객체를 ResponseEntity로 감싸서 반환한다.

 

※ 객체 데이터를 @RestController에서 그대로 응답해도 JSON 응답이 클라이언트에게 내려가는 이유는 내부적으로 Jackson 라이브러리가 객체를 알아서 JSON 포맷으로 변환시켜주기 때문임.

 

상세한 설명은 아래 블로그 참조 : https://mangkyu.tistory.com/49

 

[Spring] @Controller와 @RestController 차이

Spring에서 컨트롤러를 지정해주기 위한 어노테이션은 @Controller와 @RestController가 있습니다. 전통적인 Spring MVC의 컨트롤러인 @Controller와 Restuful 웹서비스의 컨트롤러인 @RestController의 주요한 차..

mangkyu.tistory.com

 

※ 심화 : 정적리소스 커스텀 설정 방법 잘 적힌 블로그

https://atoz-develop.tistory.com/entry/spring-boot-web-mvc-static-resources

 

[스프링 부트/MVC] 정적 리소스(Static Resources) 기본 설정과 커스텀 방법

[스프링 부트/MVC] 정적 리소스(Static Resources) 기본 설정과 커스텀 방법 스프링 부트는 정적 리소스(static resources)에 대한 기본 매핑 설정과 커스텀을 지원한다. 실제로 확인해보자. 스프링 부

atoz-develop.tistory.com

 

 

 

댓글