반응형
import com.springboot.api.dto.MemberDto;
import java.util.Map;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api/v1/put-api")
public class PutController {
// <http://localhost:8080/api/v1/put-api/default>
@PutMapping(value = "/default")
public String putMethod() {
return "Hello World!";
}
}
@RequestBody
// <http://localhost:8080/api/v1/put-api/member>
@PutMapping(value = "/member")
public String postMember(@RequestBody Map<String, Object> putData) {
StringBuilder sb = new StringBuilder();
putData.entrySet().forEach(map -> {
sb.append(map.getKey() + " : " + map.getValue() + "\\n");
});
return sb.toString();
}
// <http://localhost:8080/api/v1/put-api/member1>
@PutMapping(value = "/member1")
public String postMemberDto1(@RequestBody MemberDto memberDto) {
return memberDto.toString();
}
// <http://localhost:8080/api/v1/put-api/member2>
@PutMapping(value = "/member2")
public MemberDto postMemberDto2(@RequestBody MemberDto memberDto) {
return memberDto;
}
- 첫번째 응답값은 String 타입, 두 번째는 DTO 객체 타입
응답값 String 타입? DTO 타입?
무슨 차이?
- String 타입을 보면 HEADERS 항목의 content-type을 보면 text/plain으로서 결과값으로 일반 문자열이 전달
- DTO 타입을 보면 HEADERS 영역의 Content-Type 항목에서 application/json 형식으로 전달됨
- 4장에서 배운 RestController 애너테이션이 지정된 클래스는 @ResponseBody를 생략할 수 있음 이 애너테이션은 자동으로 값을 JSON과 같은 형식으로 변환해서 전달하는 역할 수행
@ResponseEntity 및 HttpEntity 클래스
- 스프링 프레임워크 httpEntity라는 클래스가 있다. 헤더와 body로 구성된 http 요청과 응답을 구성하는 역할 수행
public class HttpEntity<T>{
private final HttpHeaders headers;
@Nullable
private final T body;
}
- ResponseEntity는 서버에 들어온 요청에 대해 응답 데이터를 구성해서 잔달할 수 있게한다.
- 다음과 같이 ResponseEntity는 HttpEntity로 부터 HttpHeaders와 Body를 가지고 자체적으로 HttpStatus를 구현
public class ResponseEntity<T> extends HttpEntity<T> {
private final HttpStatusCode status;
}
- 이 클래스를 활용하면 응답 코드 변경은 물론 Header와 Body를 더욱 쉽게 구성할 수 있다.
// <http://localhost:8080/api/v1/put-api/member3>
@PutMapping(value = "/member3")
public ResponseEntity<MemberDto> postMemberDto3(@RequestBody MemberDto memberDto) {
return ResponseEntity
.status(HttpStatus.ACCEPTED)
.body(memberDto);
}
반응형
'Spring Boot > API를 작성하는 다양한 방법' 카테고리의 다른 글
[Spring boot] REST API 명세 문서화 (0) | 2025.08.14 |
---|---|
[Spring boot] DELETE API 만들기 (0) | 2025.08.14 |
[Spring boot] POST API 만들기 (3) | 2025.08.14 |
[Spring boot] GET API 만들기 (1) | 2025.08.14 |
[Spring boot] API를 작성하는 다양한 방법을 공부하기 전 큰 틀 (1) | 2025.08.14 |