[Java/Spring] Spring으로 GET Api 만들기

Hyeri Park·2022년 7월 11일
0

JAVA/Spring 기초

목록 보기
5/22
post-thumbnail

1. GET API

  • annotation

2. Spirng으로 api 만들기

package com.example.demo.controller;

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

@RestController //해당 Class는 REST API 처리하는 컨트롤러 
@RequestMapping("/api") //RequestMapping URI 를 지정해주는 Annotation 
public class ApiController {

	@GetMapping("/hello") //http://localhost:9090/api/hello
	public String hello() {
		return "hello spring boot!";
	}
}


3. 컨트롤러 위치

4. GetMapping 예제 (1) - 변수

package com.example.demo.controller;

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

@RestController
@RequestMapping("/api/get")
public class GetApiController {
	
	// 아래 RequestMapping을 합친것이 GetMapping 
	@GetMapping(path = "/hello") //http://localhost:9090/api/get/hello
	public String hello() {
		return "get Hello";
	}
	
	
	// @RequestMapping("/hi") : get, post, delete 모두 지정 가능하기 때문에 아래와 같이 지정해서 사
	@RequestMapping(path = "/hi", method = RequestMethod.GET) //http://localhost:9090/api/get/hi
	public String hi() {
		return "hi";
	}
    
    // 1. 변하는 값 api :: 파라미터 변수 name 다 같아야한다.
    //http://localhost:9090/api/get/path-variable/{변하는값 : spring-boot}
	@GetMapping("/path-variable/{name}")
	public String pathVariable(@PathVariable String name) {
		System.out.println("PathVariable :" + name);
		return name;
        
    // 2. 변하는 값 api :: 파라미터 변수 name 달라야 하는 경우 
    // (name = "name") 이 부분만 path-variable과 맞춰써줌 
	@GetMapping("/path-variable/{name}")
	public String pathVariable(@PathVariable (name = "name") String pathName) {
		System.out.println("PathVariable :" + pathName);
		return pathName;
	}

}

5. GetMapping 예제 (2) - queryParam

package com.example.demo.controller;

import java.util.Map;

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

@RestController
@RequestMapping("/api/get")
public class GetApiController {
	

	
	// 쿼리연산
	//http://localhost:9090/api/get/query-param?user=hyeri&email=hyerihello@gmail.com&age=30
	// @GetMapping("query-param") - 방법 1
	@GetMapping(path = "query-param") // - 방법 2
	public String queryParam(@RequestParam Map<String, String> queryParam) { //Map = key:value
		
		StringBuilder sb = new StringBuilder();
		
		queryParam.entrySet().forEach(entry ->{ //람다식 
			System.out.println(entry.getKey());
			System.out.println(entry.getValue());
			System.out.println("\n");
			
			sb.append(entry.getKey() + "=" + entry.getValue() +'n');
		});
		return sb.toString();
	}
    
    
    //2. 명시적으로 받기 
	@GetMapping("query-param02")
	public String queryParam02(
			@RequestParam String user,
			@RequestParam String email,
			@RequestParam int age
	) {
		System.out.println(user);
		System.out.println(email);
		System.out.println(age);
		
		return user + " " + email + " " + age;
	}
}

1번예제

2번예제

6. GetMapping 예제 (3) - queryParam DTO

가장 많이 쓰는 방법!

1) dto package를 만든다!

2) UserRequest.java // 리퀘스트 받을 DTO 파일 작성
DTO(Data Transfer Object) 는 계층 간 데이터 교환을 하기 위해 사용하는 객체로,
DTO는 로직을 가지지 않는 순수한 데이터 객체(getter & setter 만 가진 클래스)

package com.example.demo.dto;

public class UserRequest {
	
	private String user;
	private String email;
	private int age;
	
	// getter, setter 만들
	public String getUser() {
		return user;
	}
	public void setUser(String user) {
		this.user = user;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
	@Override
	public String toString() {
		return "UserRequest [user=" + user + ", email=" + email + ", age=" + age + "]";
	}
	
}

GetApiController.java

  • 유의할점 : @RequestParam 어노테이션을 사용하지 않는다
package com.example.demo.controller;



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

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

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

import com.example.demo.dto.UserRequest;

@RestController
@RequestMapping("/api/get")
public class GetApiController {
	

	
	// 3. 가장 많이 쓰는 방법 DTO 
	@GetMapping("query-param03")
	public String queryParam03(UserRequest userRequest) {
		System.out.println(userRequest.getUser());
		System.out.println(userRequest.getEmail());
		System.out.println(userRequest.getAge());
		
		return userRequest.toString();
	}
}

profile
Backend Developer

0개의 댓글