프로젝트를 진행하면서 백/프론트 서버를 나눠서 개발하다보니
혼자서 타임리프로 프론트 개발하여 통신방식을 테스트할 수가 없어서 포스트맨을 드디어 제대로 써보게 되었다.
다만, 이 때 컨트롤러 아규먼트의 데이터 타입이 여러가지다보니
포스트맨에서는 어떻게 예시데이터를 싣어서 보내야 하는지 찾는게 힘들었었다.
그래서 이번 기회에 정리를 해 둔다.
목차
1. PathVariable
- Controller
public ResponseEntity<?> testMethod(@PathVariable Long id)
가장 기본적인 url에 필요한 값을 싣어 보내는 방식이다.
- PostMan
http://localhost:8080/api/v1/items/{id}
단순히 해당 컨트롤러 URL에 마지막 id값만 붙여서 테스트 해주면 된다.
2. RequestParam
- Controller
public ResponseEntity<?> testMethod2( @RequestParam(required = false) String name,
@RequestParam(required = false) String detail)
PathVariable과 살짝 유사하지만 url에 해당 변수명과 값을 쌍으로 입력해서 보내줘야하는게 조금 다르다.
필요에 의하면 여러 RequestParam을 설정할 수 있으며 필수값이 아니라면 required=false 설정을 해주면 되겠다.
- PostMan
http://localhost:8080/api/v1/items/search?name=값&detail=값
3. RequestBody
CASE1.
- Controller
public ResponseEntity<?> testMethod3(@RequestBody TestDTO test)
우리가 프론트와 통신하기 위해 만든 DTO형태로 값을 받을 때 보통 RequestBody로 많이 받아온다.
Json으로 작성해서 보낸 내용을 자바에서 쓸 수 있게끔 매칭해주는 좋은 어노테이션이다.
URL은 변동사항이 없다.
- PostMan
{
"id":값,
"count":값
}
PostMan에서 Body - raw에 Json형태로 TestDTO와 같은 매칭으로 셋팅해주면 되겠다.
"키":"값" 이 기본형태이나 숫자형이라면 숫자로만 보내도 된다.
CASE2.
- Controller
public ResponseEntity<?> testMethod4(@RequestBody List<TestDTO> test)
이번에는 List DTO로 넘겨받아야할 경우가 있겠다. 여러가지 상품을 추가한다거나 등등?
- PostMan
[
{
"id":50,
"count":2
},
{
"id":2,
"count":1
}
]
똑같이 json으로 보내기에 raw셋팅을 하나 리스트의 경우는 [ ] 안에 내용들을 감싸서 보내주면 된다.
4. RequestPart
- Controller
public ResponseEntity<?> testMethod5(@RequestPart("key") TestDTO test,
@RequestPart(value = "files", required = false) List<MultipartFile> files)
이제 이미지파일, 텍스트파일같은 것들을 첨부하게 되면 RequestPart 라는 어노테이션을 사용하게 된다.
여기서부터 PostMan에서 raw방식으로 쓸 수가 없어진다.
- PostMan
이제 form-data를 써서 테스트를 해줘야한다.
@RequestPart에 ("key")라고 DTO를 받는 폼 데이터 key를 설정했다면
DTO는 우리가 어쨌든 JSON으로 계속 받아왔던 것 처럼 value에 json 셋팅을 해서 넣어주면 된다.
주의할 점은 Content-Type을 application/json으로 넣어줘야 한다.
만약 본인이 @RequestPart에 ("data") 이런식으로 했다면 PostMan에서 key대신 data로 넣으면 된다.
여기서 조금 변칙적인 문제!
DTO 안에 List가 있다면 어떻게 Json을 보내야 할까???
앞서서 썼던 [ ] 를 쓰면 될 것 같긴한데 어느 위치에 써야 할까??
{"name":"이름",
"detail":"내용수정",
"ImgIds":[1,2]
}
바로 이처럼 ImgIds가 List라고 가정하면 "ImgIds" : [ 넣을 값들 ] 을 해주면 되겠다.
5. Pageable
- Controller
public ResponseEntity<?> testMethod6(Pageable page)
리스트들을 보낼 때 몇 페이지 내용인지 해당 페이지만 담아서 보내주는 Page<?>라는 친구가 있다.
이거는 간단하다.
- PostMan
http://localhost:8080/api/v1/items/search?page=0
설정에 따라 다르지만 몇번째 페이지를 보냐를 URL에 담아서 보내게 된다.
'IT이야기 > LANGUAGE' 카테고리의 다른 글
[SpringBoot] SpringBoot 3.0 이상의 SecurityConfig 설정 - 람다식으로 변경 (0) | 2024.03.21 |
---|---|
[Java/Spring] 개선된 아키텍쳐로 리팩토링 & 자바 테스트 (1) | 2024.01.21 |
[JAVA/SpringBoot] DataConfig 설정 - 두 개 이상의 DB서버를 사용할 경우 @DataSource사용, JPA DatabaseConfig (0) | 2024.01.16 |