백엔드 11일차 - 스프링부트 : HTTP, JSON 요청, 응답 보내기

parang·2025년 4월 22일

LG CNS AM Inspire Camp 2기

목록 보기
22/50

어제에 이어서 스프링부트 공부를 시작해보자!

복습

  • 스프링부트 초보자에게 가장 중요한 것은 프로젝트 만들기이다. 프로젝트 만드는 방법은 지난 포스트에서 자세히 정리해놓았으니 참고하면 된다.

  • 스프링부트에서의 가장 큰 역할은 요청, 응답을 원할하게 표현하는 것이다.

  • pom.xml에 의존성을 추가하는 것만으로는 라이브러리가 제대로 동작하지 않는 경우가 종종 발생한다. 예를 들어, 데이터베이스 같은 라이브러리가 대표적인데, 세부 설정이 따로 필요하기 때문에 application.properties에 정보를 따로 명시해서 적어주어야 오류가 나지 않는다.

Bean

스프링부트에서 bean이 대부분이라고 해도 과언이 아니기 때문에, 매 포스트마다 디벨롭해서 정리할 예정이다.

Bean 이름

  • 컴포넌트에서 빈 이름을 지정하지 않으면 클래스의 이름으로 자동으로 이름이 지정되게 된다.
  • 같은 종류의 빈이 2개 이상이면 이름이 중요하다.

@Autowired Game g
-----------------------------
@Bean
    public Game game() {
        return new Game();
    }
    
    @Bean
    public Game game2() {
        return new Game();
    }
-> 이 상황에는 빈을 찾지 못한다.
->  @Autowired @Qualifier("game2") Game g; 이렇게 지정 가능하다.

또한, @Component("game2") 이런식으로도 이름을 지정할 수 있다.

Controller

컨트롤러는 보통 클라이언트를 맞이하는 친구라고 생각하는 것이 편하다.
이 곳에서, 요청을 주고 받는 로직을 실행하게 된다.

Controller에서 주요 사용되는 Annotation들의 소개와 예시 코드를 정리하려 한다.

그 전에, 응답 처리 방법에 대해 살펴보자.

응답 처리 - HTML

HTML로 응답을 처리할 때는, 대부분 String으로 받게 된다.

이런 형식으로, 웹페이지가 응답을 받아 나오게 된다. 이때, 템플릿에 밑의 사진 처럼 html파일이 존재하고 있어야 한다.

위의 예시는 string 형식으로 응답을 한것이고 string 뿐만 아니라 Model, Map등을 받을 수 있다.

응답 처리 - HTML + JSON

JSON으로 응답을 처리하면, HTML 파일에 있는 내용 무관하게 @ResponseBody를 했기 때문에 return 한 내용이 그대로 출력된다.

String

map

Object

List

이런식으로 @ResponseBody를 사용하면 html 웹페이지에 json 값으로 출력된다.

  • @Controller +@ResponseBody = @RestController 이기 때문에 보통 @RestController 하나로 많이 사용한다.

GET, POST

웹에서 클라이언트가 서버에 요청을 보낼 때 흔히 GET과 POST방식을 사용한다.

차이점

GET

  • GET은 ? 뒤에 쿼리 스트링으로 표현됨
  • 주소창에 값이 노출
  • 데이터 조회할 때 가장 많이 사용

POST

  • Body에 요청
  • 주소창에 값이 노출되지 않음
  • 캐싱 x
  • 데이터 전송, 등록이 목적

GET = 조회
POST = 상태를 바꾸는 요청

이렇게 주소창으로 get했을때는 반응이 없고,

post형식으로 확인해보면 정상적으로 실행함을 알 수 있다.

POST 요청 방법

  • html의 form 태그에 method속성 사용
  • js의 fetch() 사용(method: 'post')
  • 외부 프로그램 사용 (postman.. )

요청 처리 방법들

?뒤에 요청 값을 넣어서 요청!

  • HttpServletRequest

  • @RequestParam

    -> 파라미터 지정 필수, defaultValue, required로 초기값 설정 가능

  • @PathVariable

    -> 주소창에 path만 쳐도 자동으로 path 나오게 됨

  • @ModelAttribute

    -> Model 클래스에 작성되어 있는 변수와 형태가 요청과 동일하면 자동으로 대입됨.
    -> 많은 값을 요청할 때 사용

  • @RequestBody
    이 코드는 json 요청을 본문에 그대로 객체로 받는 코드이다. 앞에서 많이 사용했으니 예시코드는 참고!

굵게 표시된 코드가 많이 쓰이는 코드이다.

profile
파랑입니다.

0개의 댓글