728x90
< RequestMapping과 URI >
@RequestMapping
- RequestMapping이 붙어있는 메소드는 Client의 특정 요청이 왔을 때 Spring Framework에 의해 호출된다
- RequestMapping이 붙어 있는 메소드가 여러 개 일 때는 어떤 메소드가 호출될까?
URI(Uniform Resource Identifier)
- URL(Uniform Resource Locator)과 유사한 개념이다 (URL이 URI의 하위 개념이다)
- 특정한 자원에 접근하기 위한 이름 또는 주소
- 웹 상의 모든 자원들은 URI를 갖고 있다
- 웹 페이지
- 이미지
- 영상
URI와 Spring RequestMapping
- Spring Controller의 메소드들은 Spring Framework에 의해 URI에 따라 호출이 결정된다
- 기본 도메인에 이어지는 '/path' 들에 의해 결정된다
- https://localhost:8080/user
- https://localhost:8080/post
- https://loaclhost:8080/post/1
- RequestMapping Annotation에 URI Path 정보를 명시한다
- @RequestMapping(value="/user") 에서 /user가 path 정보이다!
URI의 활용
- URI는 요청하는 자원의 종류에 따라 이름을 정한다
- www.codepresso-blog.com/user
- www.codepresso-blog.com/posts
- www.codepresso-blog.com/reply
- URI는 계층 관계로 표현 가능,'/' 로 계층을 구분한다 = API를 설계한다
- www.codepresso-blog.com/user/paid
- www.codepresso-blog.com/user/enterprise
- www.codepresso-blog.com/user/enterprise/google
- 단일 웹 어플리케이션 내에서는 URI는 중복될 수 없다
- 중복 시 에러 발생!
- java.lang.IllegalStateException: Ambiguous mapping
- 네이밍 규약
- 소문자를 사용한다
- 요청하는 자원에 대한 명사 형태로 작성한다
- 두 단어 이상 연결될 경우 '-'를 사용한다
- 의미 있는 이름으로 일관성 있게 작성한다
Controller 클래스에 @RequestMapping 활용
- 특정 Controller 클래스 내부의 모든 메소드에 Path를 적용한다
- /user/paid
- /user/enterprise
- /user/administartor
정리!
- Spring Framework는 @RequestMapping Annotation을 인식하여 특정 요청을 처리할 메소드를 관리한다
- 기본 도메인 뒤에 '/'로 이어지는 URI Path 정보를 기반으로 Client의 요청을 Spring Framework가 메소드에 전달한다
- @RequestMapping은 Controller 클래스와 Controller 클래스 내부의 메소드에 명시가 가능하다
- URI는 자원의 주소를 의미하며 계층으로 표현이 가능하다
< HTTP API의 개념 >
API(Application Programming Interface)
- Interface란 두 개체 간의 정보를 공유하기 위한 방법(규약)
- API는 컴퓨터(프로그램) 간의 정보를 공유하기 위한 방법이다
- 함수나 메소드를 호출하는 형식의 API
- HTTP 등의 기술로 네트워크를 통한 원격 자원을 호출하는 API
- 이외에도 다양한 형태의 API가 존재한다
HTTP API vs REST API
- HTTP(S)를 활용하여 원격의 데이터를 공유하기 위한 API
- HTTP API
- REST API
- Roy Fielding이 저술한 논문의 소개된 개념(REpresentational State Transfer)
- 웹 상에서 효율적으로 데이터 공유하기 위한 아키텍처 스타일
- 다양한 조건이 만족되어야 하며, 실무에서 모든 조건을 만족하여 구현하기는 어렵다
- HTTP API와 REST API는 실무에서 혼용하여 사용한다
- 주로 REST API 명칭이 사용된다
- 사실 엄밀하게는 서로 다른 개념이다
- @RestController Annotation은 REST API, HTTP API를 위한 클래스를 명시하는 것이다
- @RestController 클래스 내의 @RequestMapping이 붙은 개별 메소드들이 하나의 REST API, HTTP API이다!
728x90
'코드프레소 체험단 > Spring Boot를 활용합 웹 개발' 카테고리의 다른 글
[Spring Boot 웹 개발 입문] Response 데이터와 JSON 포맷 (0) | 2022.02.03 |
---|---|
[Spring Boot 웹 개발 입문] Request 파라미터의 이해 (0) | 2022.02.03 |
[Spring Boot 웹 개발 입문] 계층형 아키텍처와 컨트롤러 (0) | 2022.02.03 |
[Spring Boot 웹 개발 입문] Web의 기초 개념과 HTTP의 기초 활용 (2) (0) | 2022.01.28 |
[Spring Boot 웹 개발 입문] Web의 기초 개념과 HTTP의 기초 활용 (1) (0) | 2022.01.28 |
댓글