본문 바로가기
코드프레소 체험단/Spring Boot를 활용합 웹 개발

[Spring Boot 웹 개발 입문] RequestMapping과 URI, HTTP API의 개념

by 의정부핵꿀밤 2022. 2. 3.
728x90

< RequestMapping과 URI >

 

@RequestMapping

  • RequestMapping이 붙어있는 메소드는 Client의 특정 요청이 왔을 때 Spring Framework에 의해 호출된다
  • RequestMapping이 붙어 있는 메소드가 여러 개 일 때는 어떤 메소드가 호출될까?

 

 

 

URI(Uniform Resource Identifier)

  • URL(Uniform Resource Locator)과 유사한 개념이다 (URL이 URI의 하위 개념이다)
  • 특정한 자원에 접근하기 위한 이름 또는 주소
  • 웹 상의 모든 자원들은 URI를 갖고 있다
    • 웹 페이지
    • 이미지
    • 영상

 

 

 

URI와 Spring RequestMapping

/bye

  • 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

  • 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

댓글