2022. 6. 21. 10:31ㆍ[Spring]_
개요
Spring 을 다루면서 API 를 만들고
해당 Controller 에 통신을 하기위해서 여러가지 어노테이션을 달고 파라미터에 값을 전달받습니다.
@RequestMapping("/test") @ResponseBody String test1(@RequestParam Map<String, Object> param, HttpServletRequest request)
RequestParam 혹은 httpServletRequest 등 데이터를 받는데, 이때 사용하는 통신규약이 HTTP 프로토콜 입니다.
HTTP 프로토콜 개념, 특징
Hyper Text Transfer Protocal
-> HTML 을 전달하기 위한 프로토콜 입니다.
HTTP 통신은 Request - Response 로 이루어져 있습니다.
Spring 에서 url 으로 매핑한 값에 Request 를 담아서 보내면 결과값으로 Response 해주는 것입니다.
단순 페이지 전환이 아니라 json이던 map 이던 데이터를 응답해줘야 하는경우
@ResponseBody
의 어노테이션을 달아야 하는 이유입니다.
또한 HTTP 는 상태를 저장하지 않습니다.
HTTP 통신은 독립적으로 진행되기 때문에 해당 요청이 왔는지, 무슨 결과가 나왔는지를 모릅니다.
따라서 이럴 경우에는 Session을 이용해서 기억하는것처럼 보이게 합니다.
HTTP 패킷
통신을 할때 전송되는 단위입니다.
패킷은 header 부분과 body 부분으로 나눠져 있습니다.
header 에는 요청을 하는 주소, 요청을 받는 주소, 생명주기 등이 들어있습니다.
body 에는 전달하려는 내용이 들어있습니다.
개발자 모드에서 확인 할 수 있는 header 부분
개발자 모드에서 확인 할 수 있는 Request 부분
개발자 모드에서 확인 할 수 있는 Response 부분 (보기쉬운)
HTTP-Request 종류
1. GET
2. POST
3. PUT
4.DELETE
해당 메소드는 여기서 확인 가능합니다.
HTTP-Response 종류
Status Code 를 확인하면 됩니다.
200번대 - 성공
- 200: 요청에 대한 성공
- 201: Put 메소드에 의해 원격지 서버에 파일이 생성되었음
- 202: 서버가 명령을 수신함
- 203: 서버가 클라이언트 요구 중 일부만 전송하였음
- 204: 서버가 요청을 처리하였으나 전송할 데이터가 없음
- 205: 요청에 대해 성공하였으나 클라이언트의 화면을 새로고침하도록 권고함
- 206: 요청에 대해 성공하였으나 화면을 새로 고침 하도록 권고
300번대 - 리다이렉션 ( 성공과 실패 사이 그 어딘가)
- 301: 요청한 자원이 새 URL 에 존재합니다.
- 302: 요청한 리소스가 Location (en-US) 헤더에 주어진 URL에 일시적으로 이동되었음 (캐시로 인해 다시 빌드하면 해결되는 경우 많음, 또는 Spring 에서 interceptor 에 의해 걸러지는 경우 해당 오류를 낼 수 있음)
- 303: 요청한 자원이 임시 주소에 존재
- 304: 요청한 자원이 변경되지 않음.
400번대 - 클라이언트 에러 ( 개발자 실수 )
- 400 : 잘못된 요청
- 401: 권한이 없는 요청 -> 헤더가 잘못된 경우
- 403: 해당 자원 접근 금지
- 404: 요청한 페이지가 없는 경우 (requestMapping 오류시)
- 405: 허용되지 않은 요청 메소드
- 408: 요청시간 초과
- 409: 최신 자원이 아닌데 업데이트 하는 경우
500번대 - 서버에러 ( 서버 문제 )
- 500: 내부 서버 오류
- 501: 요청한 동작에 대해 서버가 실행할 수 없는 경우
- 503: 서버가 과부화, 뻗은 경우
- 504: 게이트웨이 시간 초과
- 505: HTTP 버전 미지원일 경우
Spring 을 학습하면서 HTTP 를 공부한 부분을 정리해 보았습니다.
API 를 만들 때 F12 개발자 모드로 무슨 응답이 되었는지 파악하면, 오류를 해결하는데 많은 도움이 됩니다.
감사합니다.
'[Spring]_' 카테고리의 다른 글
[Session]_Session 개념, 간단한 사용 방법 (0) | 2022.06.29 |
---|---|
[Spring]_Maven 의 Profiles 기능 구현,사용하기_(pom.xml) (0) | 2022.06.22 |
[Spring]_Scheduler 설정 및 사용 (0) | 2022.06.17 |
[Dispatcher-Servlet]_디스패처 서블릿 이란 (0) | 2022.06.17 |
[Exception]_Spring 예외처리 (0) | 2022.06.16 |