Post API
역할 : 웹 애플리케이션을 통해 DB 등의 저장소에 리소스를 저장할 때 사용되는 API이다.
특징 :
▪ URL 경로 / Param에 변수를 넣어 요청을 보낸 GET API와 달리,
HTTP body에 담아 서버에 전달한다.
▪ HTTP body에 담아 전달되는 데이터의 형태는 주로 JSON(JavaScript Object Notation) 형식으로
값을 주고 받는다.
Post API 전달 방법
@RequestBody를 이용해서 구현
<참고> 전송 데이터를 특정하기 어려울 때는 Map을, 데이터가 특정되어 있을 경우엔 DTO를 주로 사용한다.
@PostMapping(value = "/member")
public String postMember (@RequestBody Map<String, Object> postData){
StringBuilder sb = new StringBuilder();
postData.forEach((key, value) ->
sb.append(key).append(" : ").append(value).append("\n"));
return sb.toString();
}
Put API
역할 : 웹 애플리케이션을 통해 DB 등의 저장소에 존재하는 리소스 값을 업데이트하는 데 사용하는 API이다.
특징 :
▪ POST API와 비슷하게, HTTP body에 담아 서버에 전달한다.
▪ HTTP body에 담아 전달되는 데이터의 형태는 주로 JSON(JavaScript Object Notation) 형식으로
값을 주고 받는다.
Put API 전달 방법
@RequestBody를 이용해서 구현
▪ POST API 구현에서 @PutMapping 어노테이션만 다르고 나머진 전부 동일하다.
DTO 형식으로 데이터를 전송할 경우
@PutMapping("/member")
public MemberDto postMemberDto(@RequestBody MemberDto memberDto){
return memberDto;
}
Postman에서 해당 코드에 맞는 요청(MemberDto 형태를 갖는 JSON, 위쪽 raw 내용)을 보냈을 때, 하단에 MemberDto의 형태로, 자동으로 JSON형식으로 맞춰서 데이터가 출력되는 것을 확인할 수 있다.이처럼 DTO를 사용하면, 데이터 전달에 있어 가독성을 높일 수 있고, 동일 객체의 특성에 대한 묶음으로 코드의 응집도를 높일 수 있다.
Delete API
역할 : 웹 애플리케이션을 통해 DB 등의 저장소에 존재하는 리소스 값을 삭제하는 데 사용하는 API이다.
특징 :
▪ 앞선 방식들과 같이 @Path Variable과 @RequestParam을 활용해 Delete 메서드를 구현할 수 있다.
발생 에러
추가적으로 postman에서 요청을 보낼 경우, 서버에 이런 에러 메시지가 뜰 수도 있다.
이 경우, @Path Variable이나 @Request Param 사용시 인자로 받아오는 키 값 부분과, 입력으로 받는 변수명을 서로 맞춰줘도, 스프링에서 인식을 못하는 것인데,
나는 (name = "") 을 추가해서 해결했다.
예시)
@DeleteMapping("/{variable}")
public String DeleteVariable(
@PathVariable (name = "variable") String variable
){
return variable;
}
'Programming > Spring' 카테고리의 다른 글
[Spring] - 데이터베이스 (1) | 2024.02.13 |
---|---|
[Spring] - 스프링 (gradle) springdoc으로 Swagger3 추가하기 (0) | 2024.02.06 |
[Spring] - 스프링부트 API 작성 방법 : GetMapping (0) | 2024.02.04 |
[Spring] - Controller vs RestController (0) | 2024.02.04 |
[Spring] IntelliJ 커뮤니티로 스프링 부트 프로젝트 생성하기 (feat. gradle 사용) (0) | 2024.02.01 |