Skip to content

Latest commit

Β 

History

History
123 lines (81 loc) Β· 3.72 KB

RESTful.md

File metadata and controls

123 lines (81 loc) Β· 3.72 KB

RESTful

[μž‘μ„±μž: λ…Έν¬μž¬] Β 
Β 

πŸ’‘Β REST, REST API, RESTful

λ‹€λ“€ ν•œ λ²ˆμ”©μ€ 듀어봀을 이 μš©μ–΄λ“€μ€ 각각 어떀것을 μ˜λ―Έν•˜λŠ” κ±ΈκΉŒμš”?

Β 
Β 
Β 

REST λž€?

β€˜REpresentational State Transfer’ 의 μ€„μž„λ§.

ν•˜λ‚˜μ˜ μ•„ν‚€ν…μ²˜λ‘œ λ³Ό 수 있으며,

API μ„€κ³„μ˜ 쀑심에 λ¦¬μ†ŒμŠ€κ°€ 있고 HTTP Method λ₯Ό 톡해 λ¦¬μ†ŒμŠ€λ₯Ό μ²˜λ¦¬ν•˜λ„λ‘ μ„€κ³„ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

즉, RESTful μ΄λž€ μš©μ–΄λŠ”

REST 의 κΈ°λ³Έ 원칙을 μ„±μ‹€νžˆ 지킨 μ„œλΉ„μŠ€ λ””μžμΈμ„ ν‘œν˜„ν•˜λŠ” 말이라고 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Β  Β  Β 
Β 

API λž€?

β€˜Application Programming Interfaces’ 의 μ€„μž„λ§.

Application Software λ₯Ό κ΅¬μΆ•ν•˜κ³  ν†΅ν•©ν•˜λŠ” μ •μ˜ 및 ν”„λ‘œν† μ½œ μ„ΈνŠΈλ‘œ,

μ‚¬μš©μžλ‚˜ ν΄λΌμ΄μ–ΈνŠΈκ°€ μ–»μœΌλ € ν•˜λŠ” λ¦¬μ†ŒμŠ€ μ‚¬μ΄μ˜ μ‘°μ •μžλ‘œ μƒκ°ν•˜λ©΄ λ©λ‹ˆλ‹€.

ex) 날씨 μ„œλΉ„μŠ€μš© API μ—μ„œ μ‚¬μš©μžλŠ” 우편번호λ₯Ό μ œκ³΅ν•˜κ³ ,

μƒμ‚°μžλŠ” ν•΄λ‹Ή μ§€μ—­μ˜ κΈ°μ˜¨μ„ μ‘λ‹΅ν•˜λ„λ‘ 지정 ν•  수 μžˆλ‹€.

Β 
Β  Β 
Β 

κ·Έλ ‡λ‹€λ©΄ RESTful ν•˜κ²Œ API λ₯Ό μ„€κ³„ν•œλ‹€λŠ” 것은 μ–΄λ–€ κ±Έ μ˜λ―Έν•˜λŠ” κ±ΈκΉŒμš”?

  1. λ¦¬μ†ŒμŠ€μ™€ ν–‰μœ„λ₯Ό μ§κ΄€μ μœΌλ‘œ λΆ„λ¦¬ν•œλ‹€.

    • λ¦¬μ†ŒμŠ€λŠ” URI 에 λͺ…μ‚¬λ‘œ ν‘œν˜„ν•œλ‹€.
    • ν–‰μœ„λŠ” λ¦¬μ†ŒμŠ€μ— λŒ€ν•œ CRUD λ₯Ό HTTP Method 둜 ν‘œν˜„ν•œλ‹€.

    ex) URL : http://heejj.com/user/1, HTTP Method : DELETE (O)

    URL : http://heejj.com/user/1/delete, HTTP Method : POST (X) Β 
    Β 

    CRUD HTTP Method
    CREATE POST
    READ GET
    UPDATE PUT, PATCH
    DELETE DELETE

    Β 
    Β 

  2. Header 와 Body λ₯Ό λͺ…ν™•ν•˜κ²Œ λΆ„λ¦¬ν•΄μ„œ μ‚¬μš©ν•œλ‹€.

    • λ¦¬μ†ŒμŠ€μ— λŒ€ν•œ λ‚΄μš©μ€ Body 에 λ‹΄λŠ”λ‹€.
    • HTTP μš”μ²­/응닡에 ν•„μš”ν•œ 정보듀은 Header 에 λ‹΄λŠ”λ‹€.
      • μš”μ²­ μ‹œκ°„
      • MIME νƒ€μž…
      • API 정보
      • λ“±λ“±

Β 

  1. API 버전을 κ΄€λ¦¬ν•œλ‹€.

    • API 의 Base URL 이 변경될 μˆ˜λ„ μžˆμŒμ— μœ μ˜ν•΄μ•Ό ν•œλ‹€.
    • νŠΉμ • API λ₯Ό λ³€κ²½ν•  λ•ŒλŠ” λ°˜λ“œμ‹œ ν•˜μœ„ν˜Έν™˜μ„±μ„ 보μž₯ν•΄μ•Ό ν•œλ‹€.

    Β 

  2. Stateless

    • Stateless λž€?

      • λ¬΄μƒνƒœ.
      • ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„ κ΄€κ³„μ—μ„œ μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈμ˜ μƒνƒœλ₯Ό λ³΄μ‘΄ν•˜μ§€ μ•ŠμŒμ„ λœ»ν•œλ‹€.
    • Stateless λ₯Ό μ§€ν‚€λŠ” 방법 = 멱등성을 지킨닀.

      • λ©±λ“±μ„±μ΄λž€? 연산을 μ—¬λŸ¬λ²ˆ μ μš©ν•˜λ”λΌλ„ κ²°κ³Όκ°€ 달라지지 μ•ŠλŠ” μ„±μ§ˆ

      • 고둜, Stateless λ₯Ό μ§€ν‚€λŠ” 방법은

        ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„μ—κ²Œ λͺ‡λ²ˆμ˜ 응닡을 μš”μ²­ν•œλ‹€κ³  해도 늘 같은 닡이 λŒμ•„μ™€μ•Ό ν•œλ‹€.

      • 이λ₯Ό μœ„ν•΄μ„œ μ„œλ²„λŠ” ν΄λΌμ΄μ–ΈνŠΈμ˜ 행동이 μ„œλ²„μ˜ μƒνƒœλ₯Ό λ³€κ²½ν•˜κ²Œ ν•˜λ©΄ μ•ˆλœλ‹€.

      • μ„œλ²„λŠ” 각각의 μš”μ²­μ„ μ™„μ „νžˆ λ³„κ°œμ˜ κ²ƒμœΌλ‘œ μ²˜λ¦¬ν•˜μ—¬

        이전 μš”μ²­μ΄ λ‹€μŒ μš”μ²­μ— μ—°κ΄€λ˜μ§€ μ•Šκ²Œ ν•˜κΈ° λ•Œλ¬Έμ—

        처리 방식에 일관성을 λΆ€μ—¬ν•˜κΈ° λ•Œλ¬Έμ— μ„œλ²„μ˜ 뢀담이 쀄어든닀.

        = 두가지 행동을 ν•˜λ‚˜μ˜ API 둜 μ²˜λ¦¬ν•˜μ§€ μ•ŠλŠ”λ‹€.

Β 
Β 
Β 

λ§ˆμΉ˜λŠ” 말 πŸ‘‹

RESTful 을 κ³΅λΆ€ν•˜λ©° λŠλ‚€ 점은

μ–΄λ–»κ²Œ 보면 RESTful 은 비ꡐ적 μ‰½κ²Œ 이해 ν•  수 μžˆλŠ” κ°œλ…μ΄μ§€λ§Œ

이 κ°œλ…μ„ μ΄ν•΄ν•˜κΈ° μœ„ν•΄ μ•Œμ•„μ•Ό ν•˜λŠ” 지식듀이 더 μ–΄λ €μ› μŠ΅λ‹ˆλ‹€.

μ €λŠ” Stateless κ΄€λ ¨ 뢀뢄이 κ°€μž₯ λ³΅μž‘ν•˜λ‹€κ³  λŠκ»΄μ‘ŒλŠ”λ°μš”,

μ€‘μš”ν•œ λ‚΄μš©μ΄λΌκ³  ν•˜λ‹ˆ λ‹€λ“€ 더 λ§Žμ€ λ‚΄μš©μ„ μ°Ύμ•„λ³΄μ‹œλ©΄ 쒋을 것 κ°™μŠ΅λ‹ˆλ‹€!

Β 
Β