IDE: IntetlliJ Ultimate
Spring Boot: 3.3.0
JDK: 17
11강 스프링 부트 Controller - http body 데이터 전송하기
> http body 데이터 전송하기 (실습)
- http header의 Content-Type 이해
- 스프링 부트는 기본적으로 x-www-form-urlencoded 타입을 파싱(분석)해줌
- x-www-form-urlencoded
- key=value
- plain/text
- 안녕
- application/json
- {"username": "홍길동"}
💾 HttpBodyController.java
package org.example.photogram_re.web;
import lombok.extern.slf4j.Slf4j;
import org.example.photogram_re.domain.User;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
public class HttpBodyController {
@PostMapping("/body1")
public String xwwwformurlencoded(@RequestParam("username") String username) {
log.info("username: {}", username);
return "key=value 전송옴";
}
@PostMapping("/body2")
public String plaintext(@RequestBody String data) {
log.info("data: {}", data);
return "text/plain 전송옴";
}
@PostMapping("/body3")
public String applicationjson(@RequestBody String data) {
log.info(data);
return "json 전송옴";
}
@PostMapping("/body4")
public String applicationjsonToObject(@RequestBody User user) {
log.info("user: {}", user.getUsername());
return "json 전송옴";
}
}
💾 User.java
package org.example.photogram_re.domain;
public class User {
private String username;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
위에서부터 차례대로 body1, body2, body3, body4
12강 스프링 부트 Controller - JSON 응답하기
💾 HttpResponseController.java
package org.example.photogram_re.web;
import org.example.photogram_re.domain.User;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HttpResponseJsonController {
@GetMapping("/resp/json")
public String respJson() {
return "{\"username\":\"cos\"}";
}
@GetMapping("/resp/json/object")
public User respJsonObject() {
User user = new User();
user.setUsername("홍길동");
return user; // 1. MessageConverter 가 자동으로 JavaObejct를 Json으로 변경해서 통신을 통해 응답을 해준다
// 2. @RestController 일 때만 MessageConverter가 작동함
}
}
13강 스프링 부트 Controller - HTML 응답
http 요청을 file로 응답하기
- .txt 파일 응답하기 (기본 경로는 resources/static)
- 스프링 부트가 지원하는 .mustache 파일 응답하기
- 스프링 부트가 버린 .jsp 파일 응답하기
.jsp와 .mustache 파일은 템플릿 엔진을 가지고 있다.
템플릿 엔진이란 html 파일에 java 코 드를 쓸 수 있음
[템플릿 엔진으로 `Thymeleaf`를 사용할 것이기 때문에, 이 부분은 강의만 시청.]
14강 스프링 부트 Controller - JSP 파일에 자바 코드 사용해보기
- java 코드 사용
- model 사용
[템플릿 엔진으로 `Thymeleaf`를 사용할 것이기 때문에, 이 부분은 강의만 시청.]
15강 스프링 부트 Controller - HTTP 요청 재분배하기 (redirection)
- http 상태코드 300번대
- 다른 주소로 요청을 분배한다
💾 HttpRedirectionController.java
package org.example.photogram_re.web;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HttpRedirectionController {
@GetMapping("/home")
public String home() {
// 1만줄 가정
return "home";
}
@GetMapping("/away")
public String away() {
// 다른 코드
return "redirect:/home";
}
}
💾 home.html
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
This is Home
</body>
</html>
이지업클래스 [메타코딩] 스프링부트 SNS프로젝트 - 포토그램 만들기 강의 실습
300x250
'Framekwork > photogram' 카테고리의 다른 글
[스프링 부트 포토그램] 17강 인증 회원가입 - CSFR 토큰 해제 (0) | 2024.08.26 |
---|---|
[스프링 부트 포토그램] 16강 인증 회원가입 - SecurityConfig 생성 (0) | 2024.08.22 |
[스프링 부트 포토그램] 8강~ 10강 Controller (동작 방식, http, 쿼리스트링, 주소 변수 매핑) (0) | 2024.08.20 |
[스프링 부트 포토그램] 1강 ~7강 환경설정 완료 (0) | 2024.08.09 |
[스프링 부트 포토그램] Spring Boot PhotoGram 클론 코딩 완료 (0) | 2024.08.08 |