[Spring] GET, POST API

Jin·2023년 9월 6일
0

Spring

목록 보기
2/9
post-thumbnail

1. @RequestControlller vs @Controller

@Controller

  • String 반환 → 논리 뷰 네임으로 물리 뷰 경로를 만들어서 뷰를 렌더링해줌
    • 예) hello 반환 → hello.html 뷰를 렌더링

@RestController

  • 뷰를 찾는 것이 아니라, HTTP 바디에 바로 입력
    • 예) ok 반환 → HTTP 바디에 “ok”가 들어감

2. @RequestMapping

  • value와 method로 정의하여 API를 개발하는 방식
  • 이제는 고전적인 방법으로, 사용하지 않음
  • 사용 예시
    @RestController
    **@RequestMapping**("/get-api")
    public class getController {
    
    		// http://localhost:8080/get-api/hello
    		@RequestMapping(value = "/hello", method = RequestMethod.GET)
    		public String getHello() {
    			return "Hello World";
    		}
    }

3. @GetMapping

  • GET API를 제작하기 위해 사용되는 어노테이션
  • @RequestMapping + GET method의 조합
  • 사용 예시
    **@GetMapping**(value = "/name")
    public String getName() {
    	return "Flature";
    }

4. @PostMapping

  • POST API를 제작하기 위해 사용되는 어노테이션
  • @RequestMapping + POST method의 조합
  • @RequestBody 를 이용하여 body 안에 담겨있는 값을 받아야 함@P
  • 사용 예시
    **@PostMapping**(value = "/member")
    public String postMember(@RequestBody Map<String, Object> postData) {
    	StringBuilder sb = new StringBuilder();
    
    	postData.entrySet().forEach(map -> {
    		sb.append(map.getKey() + " : " + map.getValue() + "\n");
    	});
    
    	return sb.toString();
    }

5. @PathVariable

  • URI 경로 내에서 변수를 찾아서 사용하는 방식
  • @PathVariable 의 이름과 파라미터의 이름이 같으면 생략 가능
    @GetMapping(value = "/variable2/{variable}")
    public String getVariable2(**@PathVariable** String variable) {
    	return var;
    }
  • @PathVariable 의 이름과 파라미터의 이름이 다르면 생략 불가능, 직접 지정해줘야 함
    @GetMapping(value = "/variable2/{variable}")
    public String getVariable2(@PathVariable("variable") String var) {
    	return var;
    }

6. @RequestParam

  • 쿼리 문자열을 받아오기 위해 사용되는 방법
  • 사용 예시
    • 어떤 요청 값이 들어올지 아는 경우 : http://localhost:8080/request1?name=aaa&email=bbb&organization=ccc
      @GetMapping(value = "/request1")
      public String getRequestParam1(
      		@RequestParam String name,
      		@RequestParam String email,
      		@RequestParam String organization) {
      	return name + " " + email + " " + organization;
      }
    • 어떤 요청 값이 들어올지 모를 경우
      @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();
      }

7. DTO 사용

  • GET 형식의 요청에서 쿼리 문자열을 전달하기 위해 사용되는 방법
  • key와 value가 정해져 있지만, 받아야할 파라미터가 많은 경우 DTO 객체를 사용하는 방식
    • 즉, 별도의 데이터 클래스를 만들어서 활용하는 방법
  • 사용 예시
    • DTO
      public class MemberDTO {
      	private String name;
      	private String email;
      	private String organization;
      
      	...
      }
    • Controller
      @GetMapping(value = "/request3")
      public String getRequestParam3(MemberDTO memberDTO) {
      	return memberDTO.toString();
      }
      @PostMapping(value = "/member2")
      public String postMemberDto(@RequestBody MemberDTO memberDTO) {
      	return memberDTO.toString();
      }
      • @PostMapping 에서는 @RequestBody를 붙이지 않으면 memberDTO에 null 값이 들어옴

참고 영상
GET API 만드는 다양한 방법 실습 [ 스프링 부트 (Spring Boot) ]
POST API를 작성하는 여러가지 방법 [ 스프링 부트 (Spring Boot) ]

profile
https://guswls28.tistory.com 💨💨

0개의 댓글