URI 정리

DavidΒ·2022λ…„ 8μ›” 13일
0

[Anroid] Network

λͺ©λ‘ 보기
1/2
post-thumbnail

πŸ€” 많이 μ‚¬μš©μ€ ν•˜λŠ”λ°...

μ•ˆλ“œλ‘œμ΄λ“œ 개발 μ‹œ URIλ₯Ό 많이 μ‚¬μš© ν•©λ‹ˆλ‹€.
μ „ν™”λ²ˆν˜ΈλΆ€λ₯Ό μ—΄κ±°λ‚˜ νŠΉμ • μ „ν™”λ²ˆν˜Έλ₯Ό 클릭 ν–ˆμ„ λ•Œ
μ „ν™”λ²ˆν˜Έλ₯Ό μž…λ ₯λ˜λŠ” ν™”λ©΄μœΌλ‘œ μ΄λ™ν•˜κ±°λ‚˜
메일을 λ³΄λ‚΄κ±°λ‚˜ λ“±λ“±
Intent λ°μ΄ν„°λ‘œ 많이 μ‚¬μš©ν•˜λŠ”λ°

  • μ •μ˜κ°€ 무엇인지
  • URLκ³ΌλŠ” μ–΄λ–€ μ—°κ΄€μ„± 차이점이 μžˆλŠ”μ§€
  • μ½”ν‹€λ¦°μ—μ„œλŠ” μ–΄λ–€ κΈ°λŠ₯듀을 지

정리할렀고 ν•œλ‹€.

🌱 URI 와 URL에 λŒ€ν•΄ μ•Œμ•„λ³΄μž


πŸ’πŸ» μ°Έκ³ ν•œ Reference


πŸ“Œ URI (Uniform Resource Identifier)


μ •μ˜

  • 톡합 μžμ› μ‹λ³„μž
  • 인터넷 μƒμ˜ 정보 λ¦¬μ†ŒμŠ€λ₯Ό ν†΅ν•©λœ ν˜•νƒœλ‘œ κ³ μœ ν•˜κ²Œ 식별할 수 μžˆλ‹€. => (μ‹λ³„μž)

ꡬ쑰 (rfc3986 > 15page)

foo://example.com:8042/over/there?name=ferret#nose
\_/   \______________/\_________/ \_________/ \__/
 |           |            |            |        |
scheme   authority       path        query   fragment
 |   _____________________|__
/ \ /                        \
urn:example:animal:ferret:nose

uri의 λ‹€μ–‘ν•œ μ˜ˆμ‹œ

μŠ€ν‚΄(Scheme)

Authority

  • μ‚¬μš©μž 정보, 호슀트, 포트번호 μ‘°ν•©.

  • [ userinfo "@" ] host [ ":" port ]
    -- μ‚¬μš©μž 정보(userinfo)

    • username만 μžˆμ„ μˆ˜λ„ 있고 passwordκΉŒμ§€ λ‹€ μžˆμ„ μˆ˜λ„ μžˆλ‹€.
    • λ§Œμ•½ μ‚¬μš©μž 정보가 μžˆλ‹€λ©΄ @둜 λλ‚œλ‹€.
    • userinfo = username ":" password

    -- 호슀트(Host)

    • 인터넷 μƒμ—μ„œ 식별
    • host = IP-literal / IPv4adress / reg-name

    -- 포트(port)

    • port = 숫자

경둜(Path)

  • λ¦¬μ†ŒμŠ€μ— λŒ€ν•œ 경둜.
  • host 뒀에 / 둜 μ‹œμž‘ν•˜μ—¬ ? λ‚˜ # μ•žμ—μ„œ μ’…λ£Œλ˜κ±°λ‚˜ ν˜Ήμ€ URI 끝

쿼리(Query)

  • λ¬ΌμŒν‘œ ? 둜 μ‹œμž‘ν•˜κ³  ν¬λ‘œμŠ€ν•΄μΉ˜ # 으둜 λλ‚˜κ±°λ‚˜ URI의 끝일 수 μžˆλ‹€.
  • /xxxx?key=value ν˜•μ‹

πŸ“Œ URL (Uniform Resource Locator)


μ •μ˜

  • ν”νžˆ μ›Ή μ£Όμ†ŒλΌκ³  μΈμ‹ν•˜λ©°,
    컴퓨터 λ„€νŠΈμ›Œν¬ μƒμ—μ„œ λ¦¬μ†ŒμŠ€κ°€ μ–΄λ”” μžˆλŠ”μ§€ μ•Œλ €μ£ΌλŠ” 경둜(μ£Όμ†Œ)
  • URL은 URI의 μ„œλΈŒμ…‹

URIλŠ” μ‹λ³„μž, URL은 μœ„μΉ˜λ₯Ό κ°€λ₯΄ν‚΄


πŸ’πŸ» μ•ˆλ“œλ‘œμ΄λ“œμ—μ„œ URI μ‚¬μš©

πŸ“Œ λ¬Έμžμ—΄ ν˜•νƒœ μ£Όμ†Œλ₯Ό Uri 둜 νŒŒμ‹±

val sampleUrl = "https://host/api3/home/mainLayout.php?page=1&version=4" 
val uri = Uri.parse(sampleUrl)

πŸ“Œ Uri 둜 μ›ν•˜λŠ” κ°’ κ°€μ Έμ˜€κΈ°

AppLogger.d("UriTest", "uri.lastPathSegment:${uri.lastPathSegment}")
AppLogger.d("UriTest", "uri.path:${uri.path}")
AppLogger.d("UriTest", "uri.query:${uri.query}")
D/UriTest: uri.lastPathSegment: mainLayout.php
D/UriTest: uri.path: /api3/home/mainLayout.php
D/UriTest: uri.query: page=1&version=4

πŸ‘‹πŸ» 포슀트λ₯Ό 마치며

  • URI 와 URL κ°œλ…μ„ μ΄ν•΄ν•˜κ³  μ•ˆλ“œλ‘œμ΄λ“œμ—μ„œ 자주 μ‚¬μš©ν•˜λŠ” λ©”μ†Œλ“œλ„ κ°„λž΅ν•˜κ²Œ λ΄€μŠ΅λ‹ˆλ‹€.

κ°œλ…μ„ μ΄ν•΄ν•˜κ³  λ©”μ†Œλ“œμ™€ Intentλ₯Ό λ„˜κΈ°λŠ” 것이 μ™œ URI인지 μ΄ν•΄ν•˜κ²Œ λ˜λŠ”
쒋은 κ²½ν—˜μ΄μ˜€λ˜ 것 κ°™μŠ΅λ‹ˆλ‹€.

profile
κ³΅λΆ€ν•˜λŠ” 개발자

0개의 λŒ“κΈ€