728x90
Java Spring에서 클라이언트로부터 파라미터를 받는 방법과 contentType 설정에 대해 정리
Content-Type 설정
- Content-Type은 클라이언트가 서버에 전송하는 데이터의 형식을 나타내는 HTTP 헤더입니다. 서버는 이 정보를 사용하여 요청 본문을 올바르게 처리합니다.
일반적인 Content-Type
- application/x-www-form-urlencoded: 기본 폼 데이터 전송 형식. @RequestParam을 사용할 때 기본적으로 이 형식을 사용합니다.
- application/json: JSON 형식의 데이터를 전송할 때 사용합니다. @RequestBody와 함께 사용됩니다.
- multipart/form-data: 파일 업로드 시 사용됩니다.
파라미터 수신 방법
@RequestParam
- 용도: 쿼리 매개변수 또는 폼 데이터에서 값을 추출할 때 사용합니다.
- 형식: URL 쿼리 문자열 또는 HTML 폼에서 전송된 데이터.
- 기대하는 Content-Type:
- application/x-www-form-urlencoded (기본 폼 데이터)
- 쿼리 문자열 (?key=value&key2=value2 형식)
- GET방식으로의 전송은 contentType은 무시되고 무조건 같은 형태로 전송된다. 예를 들어, 데이터가 전송될때 ?path=...&textChk=true&fileCntChk=false 형식으로 전송
@GetMapping("/example")
public String example(@RequestParam("name") String name) {
return "Hello, " + name;
}
@PathVariable
- 용도: URL 경로에서 변수 값을 추출할 때 사용합니다.
- 형식: URL 경로에 포함된 변수.
- 기대하는 Content-Type:
- application/x-www-form-urlencoded, application/json 등과 관계없이 URL 경로에 포함된 값이므로 Content-Type에 의존하지 않음.
@GetMapping("/users/{userId}")
public String getUser(@PathVariable("userId") String userId) {
return "User ID: " + userId;
}
@RequestBody
- 용도: HTTP 요청 본문에서 JSON, XML 등의 데이터를 객체로 변환하여 받을 때 사용합니다.
- 형식: JSON 형식의 데이터.
- 기대하는 Content-Type:
- application/json: JSON 형식의 데이터 전송 시 사용.
- application/xml: XML 형식의 데이터 전송 시 사용 (필요한 경우)
@PostMapping("/example")
public ResponseEntity<String> example(@RequestBody User user) {
return ResponseEntity.ok("User created: " + user.getName());
}
@ModelAttribute
- 용도: 폼 데이터 또는 쿼리 매개변수로부터 객체를 생성할 때 사용합니다.
- 기대하는 Content-Type:
- application/x-www-form-urlencoded: 기본적으로 폼 데이터를 수신.
@PostMapping("/submit")
public String submit(@ModelAttribute User user) {
return "User submitted: " + user.getName();
}
728x90
'STUDY > SpringLegacy' 카테고리의 다른 글
[Spring] Interceptor 인터셉터 (0) | 2024.11.09 |
---|---|
[STS] Spring MVC Project 템플릿 없음 해결방법 (0) | 2024.10.11 |
[Spring] @Autowired null 문제 해결 (필드 주입 사용 시) (0) | 2024.06.10 |
[Spring] Bean 등록하는 다양한 방법 (1) | 2024.05.21 |
[Spring] @Resource, @Autowired, @Inject 차이 (0) | 2024.05.21 |