본문 바로가기
Spring/스프링 입문

[스프링 입문] 2 - (3) API

by Poorm 푸름 2023. 7. 31.

[API]

 

- MVC와 달리 View가 필요없다

 

1. HelloController 수정 (문자용)

 

- 문자를 출력하는 방법 (잘 사용하지 X)

 

src - main - java - hello.hellospring - controller - HelloController 클릭 → 강의자료 코드 붙여넣기  

☞  @GetMapping("hello-string") : localhost:8080/hello-string 일 때 아래 메서드 호출

☞  @ResponseBody : http에서 헤더부와 바디부가 나눠져 있는데 바디부에 데이터를 직접 넣겠다는 의미

☞  @RequestParam("name") : RequestParam("실제 값") String 설정할 변수 이름

☞  return "hello" + name : hello name 바로 출력

 

 

2. HelloController 수정 (데이터용)

 

- 데이터를 출력하는 방법 (자주 사용)

 

src - main - java - hello.hellospring - controller - HelloController 클릭 → 강의자료 코드 붙여넣기  

☞  @GetMapping("hello-api") : localhost:8080/hello-api 일 때 아래 메서드 호출

☞  @ResponseBody : http에서 헤더부와 바디부가 나눠져 있는데 바디부에 데이터를 직접 넣겠다는 의미

☞  Hello hello = new Hello : Hello 객체 만들기 

☞  @RequestParam("name") : RequestParam("실제 값") String 설정할 변수 이름

☞  return hello : hello 라는 객체를 넘겨준다

☞  private : 같은 클래스 내에서만 접근 가능

 

 

<결과>

☞  key, value 구조로 이루어진 JSON 방식

☞  key = name, value = hibye

 

 

 

잠깐, 의문점!

 

private 쓰는 이유는 ?

 

: private 설정하지 않으면 무분별한 접근과 수정을 막을 수 없기 때문에 보안을 위해서 사용

 

 

Getter and Setter는 왜쓰는가

 

: 불필요한 정보의 유입을 막고 호출 범위를 제한을 두기 위해 Getter 사용

: private를 사용해 외부 접근을 막고 입력된 값을 처리 후 필드에 대입하기 위해 Setter 사용

 

     Getter Setter
  • 멤버 변수의 값을 조회 하기 위한 메서드
  • 객체변수명.get 멤버변수명 ( )
  • 멤버 변수에 값을 활당하기 위한 메서드
  • 객체변수명.set 멤버변수명 ( 파라미터 )

 

 

이 때 알아둘 단축키!!

 

1. Generate 에서 Getter and Setter

☞  Fn + Alt + insert + N 입력 후 getter 검색

 

2. 자동완성

☞ Shift + Ctrl + Enter

 

 

 

※ 과정

 

localhost:8080/hello-api?name= 실행

           ↓

내장 톰켓 서버가 입력 받음 

           ↓

스프링에서 Controller 찾기 (늘 controller 우선으로 찾는다)

           ↓

 hello 객체 호출

           ↓

 ResponeseBody

           ↓

 MVC의 View 대신에 Http Messager Converter 사용

           ↓

 문자가 아니고 객체는 것을 알고 JSON Converter 사용     

           ↓

 웹에서 출력

 

 

[출처] 김영한 강사님 인프런 스프링 입문 

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8