반응형
@RequestMapping 구현
- POST API는 DB 등이 저장소에 리소스를 저장할 때 사용되는 API
- GET API에서는 URL의 경로나 파라미터에 변수를 넣어 요청을 보냈지만 POST API에서는 저장하고자 하는 리소스나 값을 HTTP body에 담아 서버에 전달
import com.springboot.api.dto.MemberDto;
import java.util.Map;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
// 예제 5.10
@RestController
@RequestMapping("/api/v1/post-api")
public class PostController {
}
@RequestMapping(value = "/domain", method = RequestMethod.POST)
public String postExample(){
return "Hello Post API";
}
결과
- Body 영역에 작서되는 값은 일정한 형태를 취급
- JSON(JavaScript Object Notation)형식으로 전송되며, 가장 대중적으로 사용되는 JSON 형식 값을 주고받을 예정
그런데 왜 JSON 형태로 사용할까?
- 밑은 JSON의 역사이다.
- XML 전성기
- 웹 서비스 간 데이터 교환은 거의 전부 XML이었음
- SOAP(Web Service) 표준
- <tag>로 감싸는 구조, 무겁고 파싱 느림
- 자바 진영에서도 Spring 2.x 시절까지는 XML 설정과 XML 데이터 교환이 기본
- JSON 등장
- Douglas Crockford가 JavaScript 객체 표기법을 기반으로 JSON (JavaScript Object Notation) 정의
- 원래 JavaScript의 object literal 문법에서 파생됨
- 텍스트 기반이라 언어에 종속되지 않음, 가볍고 사람이 읽기 쉬움
- AJAX & Web 2.0 혁명
- 구글(Google Maps, Gmail) 같은 서비스가 AJAX(Asynchronous JavaScript and XML)를 활용해 웹 페이지를 부분 갱신
- 개발자들이 AJAX에서 XML 대신 JSON을 쓰기 시작함
- JavaScript에서 JSON.parse()로 바로 객체 변환 가능
- XML은 DOM 파싱이 복잡하고 무거움
- 이 시기에 XML → JSON 대세 전환이 시작됨
- REST API와 JSON의 결합
- REST(Representational State Transfer) 아키텍처 스타일이 유행
- JSON은 URL 기반 API 응답 포맷으로 최적
- Java(Spring)에서도 Jackson, Gson 같은 라이브러리로
- Java 객체 ↔ JSON 변환이 자동화됨
- Spring Boot + spring-boot-starter-web 사용 시
- 이유:
- 클라이언트(웹/앱) 대부분이 JSON API를 기대
- HTTP 응답 Content-Type: application/json이 표준화됨
- 언어 독립적: 자바뿐만 아니라 Python, JavaScript, Go, C# 등 어디서든 바로 사용 가능
- 이유:
결국 "그냥 자바 전용 포맷 쓰면 안 되나?"인데
- 가능하긴 함.
- 예: Java의 Serializable로 이진 직렬화, Avro, Protobuf 등
- 하지만:
- 브라우저나 모바일 앱에서 바로 읽기 힘듦
- 범용성, 표준성 부족 → 협업/외부 연동에 불리
- JSON은 범용 표준이라, “누구나 이해하는 공용 언어” 역할
@RequestBody
Map 객체
// <http://localhost:8080/api/v1/post-api/member>
@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();
}
MemberDto 멤버 변수 요청 메시지
// <http://localhost:8080/api/v1/post-api/member2>
@PostMapping(value = "/member2")
public String postMemberDto(@RequestBody MemberDto memberDTO) {
return memberDTO.toString();
}
반응형
'Spring Boot > API를 작성하는 다양한 방법' 카테고리의 다른 글
[Spring boot] REST API 명세 문서화 (0) | 2025.08.14 |
---|---|
[Spring boot] DELETE API 만들기 (0) | 2025.08.14 |
[Spring boot] PUT API 만들기 (0) | 2025.08.14 |
[Spring boot] GET API 만들기 (1) | 2025.08.14 |
[Spring boot] API를 작성하는 다양한 방법을 공부하기 전 큰 틀 (1) | 2025.08.14 |