본문 바로가기
Spring공부/1-REST

REST방식(5)

by 으노으뇨 2021. 10. 7.
728x90
반응형
SMALL

@RestController는 기존의 @Controller에서 사용하던 일반적인 타입이나 사용자가 정의한 타입을 사용한다.

여기에 추가로 몇가지 어노테이션을 이용하는 경우가 있다.

-@PathVariable : 일반 컨트롤러에서도 사용이 가능하지만, Rest방식에서는 자주 사용됨 , URL 경로의 일부를 파라미터로 사용할 때가 있음
-@RequestBody : JSON데이터를 원하는 타입의 객체로 변환해야 하는 경우에 주로 사용

@PathVariable

Rest방식에서는 Url내에 최대 많은 정보를 담으려고한다. 스프링 MVC에서는 @PathVariable 어노테이션을 이용해서 URL상에 경로의 일부를 파라미터로 사용할 수 있다.

http://localhost:8080/sample/{sno} 라던가 http://localhost:8080/sample/{sno}/page/{pno}

@GetMapping("/product/{cat}/{pid}")
	public String[] getPath(@PathVariable("cat") String cat, @PathVariable("pid") Integer pid) {
		log.info("MIME TYPE : " + MediaType.TEXT_PLAIN_VALUE);
		return new String[] { "category : " + cat, "productid : " + pid };
	}

 @PathVariable을 적용하고 싶은 경우에는 '{}'를 이용해서 변수명을 지정하고, @PathVariable을 이용해서 지정된 이름의 변숫값을 얻을 수 있습니다. 값을 얻을 때에는 ont, double과 같은 기본 자료형은 사용할 수 없다.

 

브라우저에서 http://localhost:8080/sample/product/bags/1234로 호출하면 cat과 pid변수의 값으로 처리되는 것을 확인 가능하다.

 

 

 

 


@RequestBody

@RequestBody는 전달된 요청의 내용을 이용해서 해당 파라미터의 타입으로 변환을 요구한다. 

내부적으로 HttpMessageConverter 타입의 객체들을 이용해서 다양한 포맷의 입력 데이터를 변환할 수 있습니다. 대부분의 ㄱ경우에는 JSON 데이터를 서버에 보내서 원하는 타입의 객체로 변환하는 용도로 사용되지만, 경우에 따라서는 원하는 포맷의 데이터로 보내고, 이를 해석해서 원하는 타입으로 사용하기도 합니다.

변환을 위해서 org.study.domain패키지에 Ticket클래스를 생성하겠다.

그리고 한가지 잊고있었던게 새로운 단위로 개발을 할 때 브랜치 새로 생성하고 나중에 풀리퀘스트를 통해 개발을 하도록 해보자,..!

package org.study.domain;

import lombok.Data;

@Data
public class Ticket {
	private int tno;
	private String owener;
	private String grade;
}

Ticket클래스는 번호 tno와 소유주, 등급을 지정한다. 

Ticket을 사용하는 예제는 SampleController에 추가한다.

	@PostMapping("/ticket")
	public Ticket convert(@RequestBody Ticket ticket) {
		log.info("Conver .............. ticket : " + ticket);
		return ticket;
	}

이때 SampleController의 다른 메서드와 달리 @PostMapping이 적용된 것을 볼 수 있다. 이것은 @RequestBody가 말 그대로 요청한 내용을 처리하기 때문에 일반적인 파라미터 전달바익을 사용할 수 없기 때문이다.

지금 같이 GET방식이 아닌 POST방식으로 지정되어있으면서 JSON형태의 데이터를 처리하는 것을 브라우저에서 개발하려면 많은 시간과 노력이 들어간다. @RestController를 쉽게 테스트할 수 있는 방법은 주로 REST방식의 데이터를 전송하는 툴을 이용하거나, JUNIT과 Spring-test를 이용해서 테스트를 하는 방식을 고려할 수 있다.

728x90
반응형
LIST

'Spring공부 > 1-REST' 카테고리의 다른 글

REST방식(7)-Ajax댓글처리  (2) 2021.10.07
REST방식(6)-Ajax댓글처리  (2) 2021.10.07
REST방식(4)  (0) 2021.10.06
REST방식(3)  (0) 2021.10.06
REST방식(2)-의존성주입  (0) 2021.10.06

댓글