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!";
}
}
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;
}
}
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번예제
가장 많이 쓰는 방법!
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
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();
}
}