[Springboot]API작성방법-GET

Michelle Kim·2024년 5월 23일

Springboot-Java

목록 보기
1/20
post-thumbnail

💙Springboot API작성하는 다양한 방법

📍GET API만들기

GET API는 웹 애플리케이션 서버에서 값을 가져올때 사용하는 API이다.

👉 @RequestMapping으로 구현하기

@RequestMapping : 별다른 설정없이 선언하면 HTTP의 모든 요청을 받는다.

스프링 4.3 버전 이후에는 @RequestMapping사용되지 않음!
대신, 다음과 같은 어노테이션 사용함.

@GetMapping
@PostMapping
@PutMapping
@DeleteMapping

👉 매개변수가 없는 GET메서드 구현

// http://localhost:8080/api/v1/get-api/name
@GetMapping(value = "/name")
    public String getName(){
        return "Flature";
    }

👉 @PathVariable활용한 GET메서드 구현

URL자체에 값을 담아 요청하기: 매개변수를 받을때 자주 쓰이는 방법 중 하나이다.

중괄호({})로 표시된 위치의 값을 받아 요청하는 것 볼수 있다.
@GetMapping 어노테이션의 값으로 URL입력할때 중괄호를 사용해 어느위치에서 값을 받을 지 지정해야 한다.

// http://localhost:8080/api/v1/get-api/variable1/{String값}
@GetMapping(value = "/variable1/{variable}")
    public String getVariable1(@PathVariable String variable){
        return variable;
    }

@GetMapping 값으로 URL입력할 때 중괄호를 사용해 어느 위치에서 값을 받을지 지정해야 한다.
@PathVariable명시하며, @GetMapping과 @PathVariable에 지정된 변수의 이름을 동일하게 맞춰야 한다.

@GetMapping(value = "/variable2{variable}")
    public String getVariable2(@PathVariable ("variable") String var){
        return var;
    }

👉 @RequestParam활용한 GET메서드 구현

쿼리 형식으로 값을 전달 할 수 있음: URI에서 '?'기준으로 우측에 '{키}={값}'형태로 구성된 요청을 전송하는 방법

@RequestParam활용하면된다. 매개별부 부분에 명시하여 쿼리값과 매칭하면 된다.

 @GetMapping(value = "/request1")
    public String getRequestParam1(
            @RequestParam String name,
            @RequestParam String email,
            @RequestParam String organization {
                return name + " " + email + " " + organization;
    }

만약 쿼리스트링에 어떤 값이 들어올지 모른다면 Map객체를 활용할 수 있다.

    @GetMapping(value = "/request2")
    public String getRequestParam2(@RequestParam Map<String, String> param){
                StringBuilder sb = new StringBuilder();
                
                param.entrySet().forEach(map -> {
                    sb.append(map.getKey() + ":" + map.getValue() + "\n");
                });
                
                return sb.toString();
    } 

👉 DTO맥체 활용한 GET메서드 구현

DTO란? : Data Transfer Object , 각 클래스 및 인터페이스를 호출하면서, 전달하는 매개변수로 사용되는 데이터 객체이다. 데이터를 교환하는 용도로만 사용하는 객체라서, 별도의 로직이 포함되지 않는다.

DTO클래스에는 전달하고자 하는 필드 객체를 선언하고,
getter/setter메서드를 구현한다.

public class MemberDto {

    private String name;
    private String email;
    private String organization;

    public String getName() {
        return name;
    }

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

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getOrganization() {
        return organization;
    }

    public void setOrganization(String organization) {
        this.organization = organization;
    }

    @Override
    public String toString() {
        return "MemberDTO{" +
            "name='" + name + '\'' +
            ", email='" + email + '\'' +
            ", organization='" + organization + '\'' +
            '}';
    }

}

쿼리스트링의 키가 정해져 있지만 받아야 할 파라미터가 많을 경우에는, DTO객체를 활용해 코드의 가독성을 높일 수 있다.

 // http://localhost:8080/api/v1/get-api/request3?name=value1&email=value2&organization=value3
    @GetMapping(value = "/request3")
    public String getRequestParam3(MemberDto memberDTO) {
        return memberDTO.toString();
    }
profile
🇬🇧영국대학교)Computer Science학과 졸업 📚Data, AI, Backend 분야에 관심이 많습니다. 👉Email: kimbg9876@gmail.com

0개의 댓글