728x90
반응형
1. Spring Boot Controller : consumes
consumes = MediaType.APPLICATION_JSON_VALUE는 Spring MVC의 @PostMapping 어노테이션에서 사용되는 속성으로, 해당 컨트롤러 메서드가 JSON 형식의 요청만 처리하도록 지정하는 역할을 합니다.
동작 방식:
- 요청 Content-Type 검사: 클라이언트가 서버에 요청을 보낼 때, 요청 헤더에 Content-Type 필드를 포함하여 데이터의 형식을 명시합니다. 이 속성을 사용하면, Content-Type이 application/json인 요청만 해당 메서드에서 처리하고, 다른 형식의 요청은 거부합니다.
- 415 Unsupported Media Type 에러: 만약 Content-Type이 application/json이 아닌 요청이 들어오면, 서버는 HTTP 상태 코드 415 Unsupported Media Type 에러를 반환합니다. 이는 클라이언트에게 요청 데이터 형식이 지원되지 않음을 알려줍니다.
사용 이유:
- API 명확성: API의 명세를 명확하게 정의하고, 클라이언트가 잘못된 형식의 요청을 보내는 것을 방지합니다.
- 데이터 처리 효율성: JSON 형식의 데이터만 처리하도록 제한하여, 불필요한 데이터 변환 작업을 줄이고 서버의 처리 효율성을 높입니다.
- 보안 강화: 예상치 못한 형식의 데이터 입력으로 인한 취약점을 방지하고, API의 보안성을 강화합니다.
예시
@RestController
@RequiredArgsConstructor
public class MemberJSONController {
private final MemberService memberService;
@PostMapping(value = "/login", consumes = MediaType.APPLICATION_JSON_VALUE)
public Map<String, Boolean> loginPost(@Valid @RequestBody MemberDTO memberDTO,
BindingResult bindingResult, RedirectAttributes redirectAttributes) throws BindException {
if (bindingResult.hasErrors()) {
throw new BindException(bindingResult);
}
Map<String, Boolean> resultMap = new HashMap<>();
if (memberService.login(memberDTO)) {
resultMap.put("status", true);
} else {
resultMap.put("status", false);
}
return resultMap;
}
}
2. HTML <form>태그 기본 속성
HTML <form> 태그에 method와 action 속성이 명시적으로 설정되어 있지 않으면, 브라우저는 다음과 같은 기본 동작을 수행합니다.
- Method: 기본적으로 GET 방식을 사용합니다.
- Action: 현재 페이지의 URL을 사용합니다.
- 데이터 전송: 폼 필드의 이름과 값을 쿼리 문자열 형태로 URL에 추가하여 서버에 전송합니다. 예를 들어, mid=user123&password=password123과 같은 형식입니다.
- 페이지 이동: 서버에서 응답을 받으면, 응답에 지정된 페이지(또는 현재 페이지)로 이동하여 새로고침됩니다.
댓글