GET API 만들기

코딩하는 하늘토끼·2023년 6월 20일

스프링부트 공부

목록 보기
4/15

프로젝트 환경

종류환경
IDEIntellij IDEA 2023.1.2 (Ultimate Edition)
언어SpringBoot 3.1.0
타입Gradle - Groovy
JDKcorretto-17
패키지 생성Jar
버전관리Github

의존성

종류이름
WebSpring web
Developer ToolsSpring Processor / Lombok

1.@RequestMapping으로 구현

@RequestMapping은 스프링 4.3버전 이후 잘 사용되지 않음

코드

controller/GetController.java

package com.springboot.hello.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api/v1/get-api")  //class 위에 @RequestMapping 가능
public class GetController {

    //@RequestMapping은 스프링 4.3버전 이후 잘 사용되지 않음
    //@RequestMapping -> @GetMapping
    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    public String getHello() {
        return "Hello World";
    }

}

결과


2.매개변수가 없는 GET 메소드 구현

코드

controller/GetController.java

package com.springboot.hello.controller;

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

@RestController
@RequestMapping("/api/v1/get-api")  //class 위에 @RequestMapping 가능
public class GetController {

    //매개변수가 없는 GET 메소드 구현
    @GetMapping(value = "/name")
    public String getName() {
        return "sky bunny";
    }

}

결과


3.@PathVariable을 활용한 GET 메서드 구현

코드

controller/GetController.java

package com.springboot.hello.controller;

import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api/v1/get-api")  //class 위에 @RequestMapping 가능
public class GetController {

    //@PathVariable을 활용한 GET 메서드 구현
    @GetMapping(value = "/var1/{var}")
    public String getVariable(@PathVariable String var) {
        return "★" + var;
    }

}

결과


4.요청 Uri 변수명과 메소드 변수명이 다를 때

코드

controller/GetController.java

package com.springboot.hello.controller;

import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api/v1/get-api")  //class 위에 @RequestMapping 가능
public class GetController {

    //요청 Uri 변수명과 메소드 변수명이 다를 때
    @GetMapping(value = "/var2/{variable}")
    public String getVariable2(@PathVariable("variable") String var) {
        return "★" + var;
    }

}

결과


5.@RequestParam을 활용한 GET 메소드 구현

코드

controller/GetController.java

package com.springboot.hello.controller;

import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api/v1/get-api")  //class 위에 @RequestMapping 가능
public class GetController {

    //@RequestParam을 활용한 GET 메소드 구현
    @GetMapping(value = "/request1")
    public String getRequestParam1(
            @RequestParam String name,
            @RequestParam String email,
            @RequestParam String organization
    ) {
        return name + " " + email + " " + organization;
    }

}

결과


6.쿼리스트링에 어떤 값이 들어올지 모를 때 - Map 객체 활용

코드

controller/GetController.java

package com.springboot.hello.controller;

import org.springframework.web.bind.annotation.*;

import java.util.Map;

@RestController
@RequestMapping("/api/v1/get-api")  //class 위에 @RequestMapping 가능
public class GetController {

    //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");
        });

        //param.forEach((key, value) -> sb.append(key).append(" : ").append(value).append("\n"));

        return sb.toString();

    }

}

결과


7.DTO 객체를 활용한 GET 메서드 구현

DTO(Data Transger Object) 다른 레이어 간의 데이터 교환에서 활용

코드

dto/MemberDto.java

package com.springboot.hello.dto;

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 + '\'' +
                '}';
    }
    
}

controller/GetController.java

package com.springboot.hello.controller;

import com.springboot.hello.dto.MemberDto;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api/v1/get-api")  //class 위에 @RequestMapping 가능
public class GetController {

    //DTO 객체를 활용한 GET 메서드 구현
    @GetMapping(value = "/request3")
    public String getRequestParam3(MemberDto memberDto) {
        return memberDto.getName() + " " + memberDto.getEmail() + " " + memberDto.getOrganization();
        //return memberDto.toString();
    }

}

결과


출처 : https://hudi.blog/data-transfer-object/

0개의 댓글