본문 바로가기

Plo Spring

Spring API

@Controller
public class HelloController {
    @GetMapping("hello")
    public String hello(Model model) {
        model.addAttribute("data", "hello!!");
        return "hello";
    }
    
    @GetMapping("hello-mvc")
    public String helloMvc(@RequestParam("name") String name, Model model) {
        model.addAttribute("name", name);
        return "hello-template";
    }
  
    @GetMapping("hello-string")
    @ResponseBody 
    public String helloString (@RequestParam("name") String name){
        return "hello" + name;
    }
    
    @GetMapping("hello-api")                            
    @ResponseBody                                       
    public Hello helloApi(@RequestParam("name") String name){
        Hello hello = new Hello();
        hello.setName(name);
        return hello;
    }
    static class Hello {
        private String name;

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

client에서 hello url로 api를 호출했을 때의 api의 동작

@GetMapping("hello")
    public String hello(Model model) {
        model.addAttribute("data", "hello!!");
        return "hello";
    }
<body>
    <p th:text="'안녕하세요. ' + ${data}">html 파일명으로 접근하면 보이는 내용입니다.!</p>
</body>

- @GetMapping() : client에서 (api url) + get요청을 서버에 보냈을 때 아래의 함수가 실행된다.

- @GetMapping() 외에도 RequestMapping , PostMapping 등 요청에 따른 어노테이션이 있다.

- model.addAttribute() : model 객체에 addAttribute(key , value) key , value 형태의 데이터를 할당한다.

- return "hello" : 컨트롤러에서 리턴 값으로 문자를 반환하면 view resolver가 templates에서 문자값과 동일한 html을 반환해준다.

-return값과 동일한 이름의 html 파일에서 th:text =" {model에 할당했던 data의 key값} "을 넣어주면 value값이 html에서 반환된다.


client에서 hello-mvc url로 api를 호출했을 때의 api의 동작

@GetMapping("hello-mvc")    
public String helloMvc(@RequestParam("name") String name, Model model) {
    model.addAttribute("name", name);
    return "hello-template";
}
http://localhost:8080/hello-mvc?name=spring

@RequestParam : @RequestParam("가져올 데이터의 이름") / 데이터의 타입 / 가져온데이터를 담을 변수

 


client에서 hello-string이라는 url로 api를 호출했을 때의 api의 동작

    @GetMapping("hello-string")
    @ResponseBody 
    public String helloString (@RequestParam("name") String name){
        return "hello" + name;
    }

@ResponseBody : template 엔진을 통하지않고 (viewResolver가 동작하지 않고) http의 body에 직접 데이터를 할당한다.

@Responsebody 어노테이션을 붙혀 문자객체를 넘겨주면 http message converter가 동작한다. 문자를 그대로 내려준다.


client에서 hello-api url로 api를 호출했을 때의 api의 동작

    @GetMapping("hello-api")
    @ResponseBody               
    public Hello helloApi(@RequestParam("name") String name){
        Hello hello = new Hello();
        hello.setName(name);
        return hello;
    }

    static class Hello {
        private String name;

        public String getName() {
            return name;
        }

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

- json형식의 data를 반환하는 restcontroller 방식

- 객체를 return하면 기본 형식이 json방식이기 때문에 객체를 넘겨주면 json형식으로 넘겨준다.

- 객체를 반환하고 ResponseBody 어노테이션을 붙혀주면 json Type으로 객체를 반환하는게 기본이다.

- mappingjackson2httpConverter가 동작해서 json타입으로 객체를 넘긴다.

'Plo Spring' 카테고리의 다른 글

Spring IOC(제어의 역전) , DI (의존성 주입)  (0) 2022.03.27
Servlet & Dispatcher Servlet  (0) 2022.03.24
Rest API Put & Patch  (0) 2022.03.23
Spring Controller , Service , Repository , Domain , DTO  (0) 2022.03.21
Spring MVC Pattern  (0) 2022.03.20