URI

김아무개·2023년 5월 2일
0

Web

목록 보기
1/13

URI

Uniform Resource Identifier
통합 자원 식별자

인터넷에서 특정 자원을 나타내는 주소 값으로, 해당 값은 유일하다.
URL과 URN으로 구성된 종합적인 개념이다.
URN은 아직 상용화되지 못했기 때문에, 아직까지는 URI와 URL을 같은 의미로 사용한다.

URL

Uniform Resource Locator
통합 자원 지시자

1.

인터넷의 리소스(자원)을 가리키는 표준 이름.
특정 파일이 어디에 위치하는지 식별하는 주소이다.

2.

URL을 통해 사람이 HTTP 및 다른 프로토콜을 통해 접근할 수 있다.

3. 구조 분석

https://n.news.naver.com/mnews/hotissue/article/050/0000065188?type=series&cid=2000090#frontDetect
위와 같은 URL이 있을때

첫 번째로,
httpsURL의 스킴 Scheme이다.
스킴 Scheme은 웹 클라이언트가 리소스에 어떻게 접근하는지에 대해 알려주는 프로토콜 정보이다.
:전 까지가 스킴 값이다.
자주 사용되는 스킴으로 http , https , ftp , sftp, mailto , file 등이 있다.

두 번째로,
n.news.naver.com은 서버의 위치다.
리소스가 어디에 호스팅 되어 있는지(= 어느 서버에 있는지) 알려준다.

세 번째로,
mnews/hotissue/article/050/0000065188은 리소스의 경로이다.

네 번째로,
?type=series&cid=2000090은 리소스의 Query Parameter 부분이다.
리소스의 경로에 키=값 쌍의 형태로 보낸 값으로 필터링한 결과를 가져온다.
이 경우 서버에 전달되는 키값쌍은 type=seriescid=2000090 두 개!

다섯 번째로,
#frontDetect은 프래그먼트라고 칭해지는 부분이다.
이 부분에서 # 뒤에 나타난 값은 절대 서버로 전달되지 않는다.
이 정보는 클라이언트에서만 사용한다.

URI 설계 원칙

  • 구분자 슬래시 /는 계층 관계를 나타내는데 사용한다.

  • URI 마지막 문자로 /는 포함하지 않는다.

  • 하이픈 -은 URI 가독성을 높이는데 사용한다.

  • 밑줄 _은 사용하지 않는다.

  • URI 경로에는 소문자가 적합하다.

  • 파일 확장자는 URI에 포함하지 않는다.
    -> 확장자를 포함하면 보안에 취약해질 수 있음
    ex. localhost/makes/numbers/random.jsp (X)
    ex. localhost/makes/numbers/random         (O)

  • 프로그래밍 언어에 의존적인 확장자를 사용하지 않는다.
    -> 확장자를 포함하면 보안에 취약해질 수 있음
    ex. localhost/makes/numbers/random.do (X)
    ex. localhost/makes/numbers/random       (O)

  • 구현에 의존적인 경로를 사용하지 않는다.
    -> 무엇으로 구현했는지 노출한다면 보안에 취약해질 수 있음
    ex. localhost/servlet/makes/numbers (X)

  • 세션 ID를 포함하지 않는다.
    -> 상대방이 취득하게 되면, 다른 사용자의 세션 ID를 알아낼 수도 있기 때문에 노출하면 안됨.

  • 프로그래밍 언어의 Method 명을 이용하지 않는다.

  • 명사에 단수형 보다는 복수형을 사용해야 한다.

  • 컬렉션에 대한 표현은 복수로 사용!

  • 컨트롤러 이름으로는 동사나 동사구를 사용한다.

  • 경로 부분 중 변하는 부분은 유일한 값으로 대체한다.
    ex. localhost/pages/100/idx/1

  • CRUD 기능을 나타내는 것은 URI에 사용하지 않는다.
    -> method를 사용 GET / POST / DELETE / PUT / PATCH 등등

  • URI Query Parameter 디자인
    -> 컬렉션 결과에 대해 필터링 할 경우 사용한다.
    ex. localhost/news?page=0&size=13&sort=desc

  • API에 있어서 서브 도메인은 일관성 있게 사용해야 한다.
    ex. http://www.zhyun.kim
    ex. http://api.zhyun.kim

  • 클라이언트 개발자 포탈 서브 도메인은 일관성 있게 만든다.
    ex. 운영 서버 : http://www.zhyun.kim
    ex. 테스트 서버 : http://dev.zhyun.kim
    ex. 테스트 서버 : http://developer.zhyun.kim

profile
Hello velog! 

0개의 댓글