URI와 URL

·2023년 7월 5일
0

프로젝트 공부

목록 보기
5/33

URI와 URL의 차이

  • URI는 특정 리소스를 식별하는 통합 자원 식별자(Uniform Resource Identifier)를 의미한다. 웹 기술에서 사용하는 논리적 또는 물리적 리소스를 식별하는 고유한 문자열 시퀀스다.
  • URL은 흔히 웹 주소라고도 하며, 컴퓨터 네트워크 상에서 리소스가 어디 있는지 알려주기 위한 규약이다. URI의 서브셋이다

URI와 URL의 가장 큰 차이점
"URI는 식별하고, URL은 위치를 가리킨다."


예시


두 주소는 모두 index.html을 가리키고 있다.

첫번째 주소는 웹서버의 실제 파일 위치를 나타내는 주소이므로 URI이면서 URL이다.
두번째 주소는 실제로 index라는 파일이 웹서버에 존재하지 않으므로 URL은 아니다. 하지만 서버 내부에서 이를 처리하여 결국 index.html을 가리키기 때문에 URI라고 볼 수 있다.

URI와 URL의 주의할 점

  1. URL은 어떤 자원에 대한 위치를 나타내는 것이라면, URI는 문자열을 식별하기 위한 것이므로 가능한 명사를 사용해야 하며, 동사를 사용하는 것은 피해야 한다
    • HTTP에 대한 행위에 대해서는 이미 HTTP Method를 통해 알 수 있으며, 이를 URI에 표현하는 것은 오히려 혼동을 줄 수 있기 때문이다.
  2. 명사를 사용할 때도 단수보다는 복수를 사용하는 것이 좋다
    • API를 설계할 때, 어떠한 자원을 가져오게 되는데 그것은 보통 DB 등에서 가져오게 되고, 그들은 여러 개의 데이터로 존재하기 때문이다.
    • 따라서 복수형을 사용함으로써 컬렉션이라는 것을 명확하게 알려줄 수 있고, 그 중에서 특정 데이터를 가져온다면 해당 데이터를 단수로 표현하는 것으로써 더욱 깔끔한 API가 될 것이다.
    GET /users/1/friends/1 -> 1번 유저의 1번 친구
  3. orders 등의 명사는 가능한 사용하지 않는 것이 좋다
    • SQL 쿼리문에서 order는 정렬의 키워드로써 사용하기 때문에 이를 같이 사용하면 혼동을 줄 수 있기 때문이다.
    • 따라서 SQL 질의문 등에 존재하는 키워드들의 사용은 자제하는 것이 좋다.

URI 설계 시 주의할 점

  1. 슬래시 구분자(/)는 계층 관계를 나타내는 데 사용한다.
    http://restapi.example.com/houses/apartments
    http://restapi.example.com/animals/mammals/whales

  2. URI 마지막 문자로 슬래시(/)를 포함하지 않는다.

    • URI에 포함되는 모든 글자는 리소스의 유일한 식별자로 사용되어야 하며 URI가 다르다는 것은 리소스가 다르다는 것이고, 그 말은 곧 리소스가 다르면 URI도 달라져야 한다는 뜻이다.
    • REST API는 분명한 URI를 만들어 통신을 해야 하기 때문에 혼동을 주지 않도록 URI 경로의 마지막에는 슬래시(/)를 사용하지 않는다.
      http://restapi.example.com/houses/apartments/ (X)
      http://restapi.example.com/houses/apartments (0)
  3. 하이픈(-)은 URI 가독성을 높이는데 사용한다.

    • URI를 쉽게 읽고 해석하기 위해, 불가피하게 긴 URI경로를 사용하게 된다면 하이픈을 사용해 가독성을 높일 수 있다.
  4. 밑줄(_)은 URI에 사용하지 않는다.

    • 글꼴에 따라 다르긴 하지만 밑줄은 보기 어렵거나 밑줄 때문에 문자가 가려지기도 한다. 이런 문제를 피하기 위해 밑줄 대신 하이픈(-)을 사용하는 것이 좋다(가독성).
  5. URI 경로에는 소문자가 적합하다.

    • URI 경로에 대문자 사용은 피하도록 해야 한다. 대소문자에 따라 다른 리소스로 인식하게 되기 때문이다.
    • RFC3986(URI 문법 형식)은 URI 스키마와 호스트를 제외하고는 대소문자를 구별하도록 규정하고 있기 때문이다.
  6. 파일 확장자는 URI에 포함시키지 않는다.

GET / members/soccer/345/photo HTTP/1.1 Host: restapi.example.com Accept: image/jpg

URI의 구조

일반 URI는 다음과 같은 형태를 나타낸다.

scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]
  1. scheme : 사용할 프로토콜을 뜻하며 웹에서는 http 또는 https를 사용
  2. user와 password : (서버에 있는) 데이터에 접근하기 위한 사용자의 이름과 비밀번호
  3. host와 port : 접근할 대상(서버)의 호스트명과 포트번호
  4. path : 접근할 대상(서버)의 경로에 대한 상세 정보
  5. query : 접근할 대상에 전달하는 추가적인 정보 (파라미터)
  6. fragment : 메인 리소스 내에 존재하는 서브 리소스에 접근할 때 이를 식별하기 위한 정보

출처
URI랑 URL 차이점이 뭔데?
Packet? Header? RESTful? REST API?

profile
개발자가 되고싶은 낭랑 24세

0개의 댓글

관련 채용 정보