@PostMapping("/create")
public ResponseEntity<User> createUser(@RequestBody User user) {
// 처리 로직
}
- @RequestParam : Spring MVC에서 HTTP 요청 파라미터를 컨트롤러 메소드의 매개변수로 바인딩하는 데 사용된다.
- @RequestParam 어노테이션의 주요 속성은 다음과 같다.
- value 또는 name: 매핑할 요청 파라미터의 이름을 지정한다.
- required: 필수 파라미터 여부를 지정한다 기본값은 true이며, 만약 요청 파라미터가 누락되면 예외가 발생한다. false로 설정하면 해당 파라미터가 없어도 오류 없이 메소드가 실행된다.
- defaultValue: 요청 파라미터가 없을 경우 사용할 기본 값이다. required가 false로 설정되어 있고, 해당 파라미터가 요청에 없을 때 사용된다.
@GetMapping("/user") public ResponseEntity<User> getUserById( @RequestParam(value = "id", required = false, defaultValue = "0") Long userId ) { // userId를 이용한 사용자 정보 검색 및 처리 }
@PostMapping("/update")
public ResponseEntity<User> updateUser(@ModelAttribute("newUser") User user) {
// 처리 로직
}
@ModelAttribute 이 어노테이션을 메소드 매개변수 앞에 붙이면 Spring은 해당 객체를 자동으로 생성하고, HTTP 요청의 파라미터를 이 객체에 바인딩한다. 주로 POST 요청의 form 데이터를 처리할 때 사용된다. HTML 폼과 백엔드 Java 코드 간의 데이터 전달을 편리하게 처리할 수 있도록 도와준다.
@GetMapping("/users/{id}")
public ResponseEntity<User> getUserById(@PathVariable Long id) {
// id를 이용한 사용자 정보 검색 및 처리
}
@GetMapping("/headers")
public ResponseEntity<String> getHeaderInfo(@RequestHeader("User-Agent") String userAgent) {
// User-Agent 헤더 정보 사용
}
-하이퍼 텍스트 문서를 교환하기 위한 프로토콜이다.(통신규약이다.)
프론트 엔드 서버(프론트 엔드 개발에 관련된 서버)와 클라이언트간의 통신에 사용된다.
프로트엔드 서버와 클라이언트 서버간의 통신에도 사용된다.
HTTP는 TCP/IP 기반으로 되어있다.
클라이어트와 서버의 모든 통신이 요청과 응답으로 이루어진다.
HTTP Request Message는 공백을 제외하고 3가지 부분으로 나누어진다.
- Start Line
- Headers
- Body
start line : HTTP Request Message의 시작라인. 3가지 부분으로 구성된다.
GET(HTTP method) /index.html(Request target) HTTP/1.1(HTTP version)
해당 request에 대한 추가정보를 담고 있다. request메세지 body의 총길이(Content-Length 등의 key:value 형태 header도 3가지 부분으로 나뉜다.
- General Headers
- Request Headers
- Entity Headers
Host 요청하려는 서버 호스트 이름과 포트번호
User-agent 클라이언트 프로그램 정보. 이 정보를 통해 서버는 클라이언트 프로그램(브라우저)에 맞는 최적의 데이터를 보내줄 수 있다.
Referer 바로 직전에 머물렀던 웹 링크 주소
Accept 클라이언트가 처리 가능한 미디어 타입 종류 나열
If-Modified-Since 여기에 쓰여진 시간 이후로 변경된 리소스 취득. 페이지가 수정되었으면 최신 페이지로 교체한다.
Authorization 인증 토큰을 서버로 보낼 때 쓰이는 Header
Origin 서버로 Post 요청을 보낼 때 요청이 어느 주소에 시작되었는지 나타내는 값. 이 값으로 요청을 보낸 주소와 받는 주소가 다르면 CORS(Cross-Origin Resource Sharing) 에러가 발생한다.
Cookie 쿠키 값이 key-value로 표현된다.
출처: https://hahahoho5915.tistory.com/62 [넌 잘하고 있어:티스토리]
Host: example.com:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36
Referer: https://www.google.com/search?q=example
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8
If-Modified-Since: Thu, 25 Nov 2023 12:00:00 GMT
Authorization:
Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Origin: https://www.example.com
Cookie: sessionId=abc123; userId=987xyz
HTTP Request가 전송하는 데이터를 담고 있는 부분 전송하는 데이터가 없다면 body부분은 비어있다. 보통 post 요청일 경우, HTML 폼 데이터가 포함되어 있다.
POST /test HTTP/1.1
Accept: application/json
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 83
Content-Type: application/json
Host: google.com
User-Agent: HTTPie/0.9.3
{
"test_id": "tmp_1234567",
"order_id": "8237352"
}
POST /test HTTP/1.1: 이 부분은 요청의 메서드, 엔드포인트, 그리고 사용하는 HTTP 버전을 보여줍니다. 여기서는 POST 메서드를 사용하고 '/test' 엔드포인트로 요청을 보내고 있으며, HTTP 버전은 1.1을 사용하고 있습니다.
Accept: application/json: 이 헤더는 클라이언트가 JSON 형식의 응답을 원한다는 것을 나타냅니다. 서버가 JSON 형식으로 응답할 수 있으면 이를 사용하여 응답할 수 있습니다.
Accept-Encoding: gzip, deflate: 이 헤더는 클라이언트가 서버에서 gzip 또는 deflate 압축 방식으로 응답을 받을 수 있다는 것을 나타냅니다. 이렇게 함으로써 서버는 응답을 압축하여 전송할 수 있습니다.
Connection: keep-alive: 이 헤더는 클라이언트와 서버 간의 연결을 유지하고 있다는 것을 나타냅니다. 이는 추가 요청을 위해 동일한 연결을 계속 사용할 수 있도록 합니다.
Content-Length: 83: 이 헤더는 요청 본문의 길이를 나타냅니다. 여기서는 요청 본문의 길이가 83바이트임을 나타냅니다.
Content-Type: application/json: 이 헤더는 요청의 본문(body)의 데이터 타입을 나타냅니다. 여기서는 JSON 형식으로 데이터를 보내고 있음을 나타냅니다.
Host: google.com: 이 헤더는 요청이 전송되는 호스트를 나타냅니다. 여기서는 'google.com' 호스트로 요청을 보내고 있습니다.
User-Agent: HTTPie/0.9.3: 이 헤더는 클라이언트 소프트웨어의 정보를 포함합니다. 여기서는 'HTTPie/0.9.3'이라는 클라이언트 소프트웨어를 사용하여 요청을 보내고 있습니다.
HTTP/1.1 200 OK
[HTTP version][Status Code] [Status Text]