Coding 공부/IntelliJ

[IntelliJ_SpringBoot] consumes, HTML <form>태그 기본 속성

CBJH 2024. 5. 31.
728x90
반응형

1. Spring Boot Controller : consumes

consumes = MediaType.APPLICATION_JSON_VALUE는 Spring MVC의 @PostMapping 어노테이션에서 사용되는 속성으로, 해당 컨트롤러 메서드가 JSON 형식의 요청만 처리하도록 지정하는 역할을 합니다.

동작 방식:

  1. 요청 Content-Type 검사: 클라이언트가 서버에 요청을 보낼 때, 요청 헤더에 Content-Type 필드를 포함하여 데이터의 형식을 명시합니다. 이 속성을 사용하면, Content-Typeapplication/json인 요청만 해당 메서드에서 처리하고, 다른 형식의 요청은 거부합니다.
  2. 415 Unsupported Media Type 에러: 만약 Content-Typeapplication/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> 태그에 methodaction 속성이 명시적으로 설정되어 있지 않으면, 브라우저는 다음과 같은 기본 동작을 수행합니다.

  1. Method: 기본적으로 GET 방식을 사용합니다.
  2. Action: 현재 페이지의 URL을 사용합니다.
  3. 데이터 전송: 폼 필드의 이름과 값을 쿼리 문자열 형태로 URL에 추가하여 서버에 전송합니다. 예를 들어, mid=user123&password=password123과 같은 형식입니다.
  4. 페이지 이동: 서버에서 응답을 받으면, 응답에 지정된 페이지(또는 현재 페이지)로 이동하여 새로고침됩니다.

댓글