개발/Springboot

[Spring] 김영한의 Spring 입문 섹션 2. 스프링 웹 개발 기초

윤J 2023. 5. 15. 22:27
  • 정적 컨텐츠: 그냥 파일 그대로 올려줌
  • MVC, 템플릿 엔진: 서버에서 약간의 변형을 거치고 올려줌
  • API: json 이라는 데이터 구조 포맷으로 클라이언트에게 전달

 

[1] 정적 컨텐츠

Spring Boot에는 resources: static/hello-static.html에서 정적 컨텐츠 찾아서 반환하는 기능 있음

 

 

[2] MVC와 템플릿 엔진

MVC: Model, View(=html), Controller

    @GetMapping("hello-mvc")
    public String helloMvc(@RequestParam(value = "name", required = false) String name, Model model){
        model.addAttribute("name", name);
        // model에 속성 추가 "name"은 html에서 쓰이는 값 이름, 뒤 name은 request로 받은 값 value(html에 넘겨줌)
        return "hello-template";
    }

 

 

[3] API

  • getter setter 단축키: alt+insert
  • getter setter 함수: (보통은 class 안에서) getter는 인스턴스 변수를 반환(return)하고 setter는 인스턴스 변수를 생성, 대입하거나 수정한다. -> 인터넷을 찾아보니 사용을 줄이는 게 낫다고 한다!
public class Vehicle {
  private String color;
  
  // Getter
  public String getColor() {
    return color;
  }
  
  // Setter
  public void setColor(String c) {
    this.color = c;
  }
}

 

  • JSON(JavaScript Object Notation): 서버에서 클라이언트로 데이터를 보낼 때 사용하는 양식. 클라이언트가 사용하는 언어에 관계 없이 통일된 데이터를 주고받을 수 있도록, 일정한 패턴을 지닌 문자열을 생성해 내보내면 클라이언트는 그를 해석해 데이터를 자기만의 방식으로 온전히 저장, 표시할 수 있게 된다.
  • API: API는 Application Programming Interface(애플리케이션 프로그램 인터페이스)의 줄임말입니다. API의 맥락에서 애플리케이션이라는 단어는 고유한 기능을 가진 모든 소프트웨어를 나타냅니다. 인터페이스는 두 애플리케이션 간의 서비스 계약이라고 할 수 있습니다. 이 계약은 요청과 응답을 사용하여 두 애플리케이션이 서로 통신하는 방법을 정의합니다. API 문서에는 개발자가 이러한 요청과 응답을 구성하는 방법에 대한 정보가 들어 있습니다.
	
    @GetMapping("hello-string")// URL 주소
    @ResponseBody // http의 body에 직접 넣어주겠다
    public String helloString(@RequestParam("name") String name){
        return "hello " + name; // API 방식, 문자 그대로 내려준다
    }

    @GetMapping("hello-api")
    @ResponseBody // JSON으로 반환하는 게 기본
    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;
        }
    }