본문 바로가기
기록해보기

GET API 개발하고 테스트

by titlejjk 2023. 5. 28.

API란 데이터를 컴퓨터 끼리 주고받는 과정에서 어떻게 주고 받을지 정해놓은 것을 API라고 한다.

처음 테스트로 덧셈을 할 수 있는 API를 만들어 보겠다.

가장먼저 패키지를 만들어주겠다.

src -> main -> java -> com.group.libraryapp 에 New -> Package
새로운 패키지 이름은 controller로

이런 식으로 하나의 패키지를 만들어 주었다(맥 단축키를 써보았다. ⌘ + N)

계산식을 만들기 위해 calculator 라고 만들어주고 그안에 CalculatorController라는 클래스까지 만들어보겠다.

이렇게 우리가 어떻게 API를 어떻게 만들지를 API Specification(명세)라고 한다. 즉 API명세를 정하고 그 명세대로 API를 개발하는 것이다. API는 약속이기 때문에 메소드는 어떻게 하고 Path는 어떻게하고를 먼저 정하고 프로젝트에 들어가야 한다.

 

덧셈 API에 다음 4가지를 정해보겠다.

HTTP Method     =>  GET (어떤 데이터를 달라 이기 때문에)

HTTP Path           =>  /add

쿼리 (key와 value)=> int number1 / int number2(자바에서의 int)

API의 반환 결과     => 숫자 - 두 숫자의 덧셈결과

 

API를 개발할때는 하나의 클래스를 만들어 두고 가장위에 @RestController 를 만들어주어야한다.

@RestController → 지금 이 클래스를 API의 진입 지점으로 만들겠다 라고 해주는 것이다.

그 다음으로는 

@GetMapping(/add) → 여기에서의 앞에 Get는 HTTP Method GET이다. 뒤에 (/add)는 Path

 

이 다음에는 함수를 적어주면된다. 두개의 숫자를 받아 반환하는 함수를 만들어준다.

public int addTwoNumbers(int number1, int number2){
	return number1 + number2;
}

이렇게 하면 받을 준비는 끝났다.

이제 쿼리를 통해서 넘어온 데이터를 위에 메소드에 연결해주어야 하는데 이때 @RequestParam이라 적어주어야 한다.

public int addTwoNumbers(@RequestParam int number1, @RequestParam int number2){
	return number1 + number2;
}

 

이렇게 덧셈을 할수 있는 API를 만들어 보았다!

package com.group.libraryapp.controller.calculator;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class CalculatorController {

    @GetMapping("/add")//GET /add
    public int addTwoNumbers(@RequestParam int number1, @RequestParam int number2){
        return number1 + number2;
    }
}

여기까지 정리

@RestController 👉

주어진 Class를 Controller로 등록한다.

이 Controller는 API의 진입지점이다.

이 어노테이션이 있어야지만이 함수를 만들고 API가 만들어 졌을때 연결이 가능하다.

 

@GetMapping("/add")👉

아래 함수(addTwoNumbers)를 HTTP Method가 GET이고 HTTP path가 /add인 API로 지정한다.

 

@RequestParam👉

주어지는 쿼리를 함수 파라미터에 넣는다.

 

이제 이 API가 잘 구동이 되는지 테스트를 해보겠다.

앞에 만들어져 있던 LibraryAppApplication 에 들어가서 실행을 하고

서버가 실행되는 것을 확인 했으면 POST MAN으로 가서 덧셈 GET API가 잘 동작하는지 확인 해보겠다.

저 빨간 화살표에서 + 버튼을 눌러주고

위에 사진처럼 첫번째로

GET를 설정해 준 후에 http://localhost:8080/add?number1=10&number2=20 로 주소를 완성시켜주고 Send를 누르면

왼쪽 하단에 30이라는 값과 오른쪽 하단에 200OK를 통하여 값이 잘 전달된것을 확인할 수 있다.

 

첫 API를 만들어서 테스트하긴 했는데 위에 코드는 @RequestParam으로 만들었지만 나중에 여러가지를 받게 되면 많은 @RequestParam으로 써주어야하는데 이럴 경우를 대비해서 여기에 객체를 받게끔 할수도 있다.

이번에는 librayapp 아래 새로운 DTO package를 만들고 java class를 만들어보겠다.

CalculatorAddRequest라는 java class를 만들고 숫자를 받을 필드 두개를 만들어주었다.

package com.group.libraryapp.dto.calcuator.request;

public class CalculatorAddRequest {

    private final int number1;
    private final int number2;

}

그다음에 생성자와 Getter를 만들어보겠다. 직접치치 않고 ⌘ + N을 누르면 아래와 같은창이 나오는데 이를 통해Constructor와 Getter를 만들수 있다.

두개를 클릭해서 만들면 자동으로 만들어준다.

package com.group.libraryapp.dto.calcuator.request;

public class CalculatorAddRequest {

    private final int number1;
    private final int number2;

    public CalculatorAddRequest(int number1, int number2) {
        this.number1 = number1;
        this.number2 = number2;
    }

    public int getNumber1() {
        return number1;
    }

    public int getNumber2() {
        return number2;
    }
}

이제 위에 선언했던 필드를 GetAPI에서 사용할수 있도록 CalculatorController class에서 

@RequestParam int number1, number2 부분을 CalculatorAddRequest로 바꿔주겠다. 

이렇게 되면 이 API가 호출될 때 주어진 쿼리가 CalculatorAddRequest class에 있는 객체에 값에 들어가게 되어 객체로 한번 감싸서 return 으로 값을 받을 수 있다.

package com.group.libraryapp.controller.calculator;

import com.group.libraryapp.dto.calcuator.request.CalculatorAddRequest;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class CalculatorController {

    @GetMapping("/add")//GET /add
    public int addTwoNumbers(CalculatorAddRequest request){
        return request.getNumber1() + request.getNumber2();
    }
}

이후에 POST MAN을 돌려보면

100 + 200으로 바꿔보았다.

🧑‍💻DTO

Data Transfer Object,를 DTO라고 한다. 데이터 전달객체

'기록해보기' 카테고리의 다른 글

유저 생성 API 개발  (0) 2023.06.01
POST API를 개발하고 테스트하기  (0) 2023.05.28
네트워크란 무엇인가?  (0) 2023.05.28
@SpringBootApplication 과 서버  (0) 2023.05.27
새로운 프로젝트 시작해보기  (0) 2023.05.27

댓글