๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿค2024 ์•ˆ๋“œ๋กœ์ด๋“œ/Filmo ์˜ํ™” ํ”„๋กœ์ ํŠธ

Android ๋„คํŠธ์›Œํฌ ํ†ต์‹  ๊ฐœ๋… ์ตํžˆ๊ธฐ [REST,URL, URI, Retrofit]

by hyeonha 2024. 3. 5.

๋ชฉ์ฐจ

    ๋“ค์–ด๊ฐ€๊ธฐ ์ „์—

    ๊ฐœ๋ฐœ์„ ํ•  ๋•Œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋กœ์ง์€ ํ•„์ˆ˜์ ์ด๋‹ค! ์ด ๋•Œ ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜์—ฌ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด์™€ ๊ด€๋ จ๋œ ๊ฐœ๋…์„ ์•Œ์•„๋ณด์ž

    REST api๋ž€ ?

    REpresentational StateTransfer : REST๋ผ๋Š”  ์›น ์•„ํ‚คํ…์ณ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์›น ์„œ๋น„์Šค๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

    REST api๋Š” REST ์•„ํ‚คํ…์ณ ์Šคํƒ€์ผ์˜ ๋””์ž์ธ ์›์น™์„ ์ค€์ˆ˜ํ•˜๋Š” API๋ฅผ ๋งํ•œ๋‹ค.

    API๋ž€ ?

    ์—ฌ๊ธฐ์„œ api๋ž€ application programming interface๋ฅผ ๋งํ•œ๋‹ค. 

    api๋Š” ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ž์™€ ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ž ์‚ฌ์ด์˜ ๊ณ„์•ฝ์„ ๋งํ•œ๋‹ค.

    ์ •๋ณด๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ์ž (์†Œ๋น„์ž)์™€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ƒ์‚ฐ์ž๋Š” ๊ฐ๊ฐ content๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ ์ด๋ฅผ ๊ฐ๊ฐ call๊ณผ response๋ผ๊ณ  ํ•œ๋‹ค.

    ๋งŒ์•ฝ ์ปดํ“จํ„ฐ์™€ ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ฃผ๊ฑฐ๋‚˜ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์‹œ์Šคํ…œ๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด api๋Š” ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ทธ ์‹œ์Šคํ…œ์—๊ฒŒ ์›ํ•˜๋Š” ์˜์‚ฌ์†Œํ†ต์„ ํ•˜๋„๋ก ๋„์™€์ค€๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•ด์„œ ์šฐ๋ฆฌ๋Š” ์šฐ๋ฆฌ์˜ ์š”๊ตฌ๊ฐ€ request๋ฅผ ๋งŒ์กฑ์‹œ์ผœ์ค„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค!

    ์šฐ๋ฆฌ๋Š” api๋ฅผ user ๋˜๋Š” client์™€ ์šฐ๋ฆฌ๊ฐ€ ๋ฐ›๊ณ  ์‹ถ์€ resources ๋˜๋Š” web services ์‚ฌ์ด์˜ ์ค‘๊ณ„์ž๋กœ๋„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. 

    REST api์˜ ์ž‘๋™ ๋ฐฉ์‹

    REST api๋Š” HTTP ์š”์ฒญ์„ ํ†ตํ•ด ํ†ต์‹ ํ•จ์œผ๋กœ์จ ๋ฆฌ์†Œ์Šค ๋‚ด์—์„œ CRUD๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.

    REST api๋Š” GET ์š”์ฒญ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ , POST๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ž‘์„ฑํ•˜๊ณ , PUT ์š”์ฒญ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ  DELETE ์š”์ฒญ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค. 

     

     

     

     

    URI์™€ URL
    URI : Uniform Resource Identifier๋ฅผ ํ†ตํ•ด ํ‘œ์ค€ํ™”๋œ ๋ฐฉ์‹์œผ๋กœ RESTful ์›น ์„œ๋น„์Šค์— ์š”์ฒญ์„ ์ „์†กํ•œ๋‹ค.
    URI :๋ฆฌ์†Œ์Šค์˜ ์œ„์น˜ ๋˜๋Š” ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•”์‹œํ•˜์ง€ ์•Š๊ณ  ์ด๋ฆ„์œผ๋กœ ์„œ๋ฒ„์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์‹๋ณ„ํ•œ๋‹ค.
    ์ž์›์„ ๊ตฌ์กฐ์™€ ํ•จ๊ป˜ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฉ์‹์„ URI๋ผ๊ณ  ํ•œ๋‹ค.

     

    ์˜ˆ๋ฅผ ๋“ค์–ด 

    ์„œ๋ฒ„์ฃผ์†Œ/login -> ๋กœ๊ทธ์ธ์„ ํ†ตํ•ด ํ† ํฐ์„ ๋ฐœ๊ธ‰ํ•œ๋‹ค.

    https://android-kotlin-fun-mars-server.appspot.com/realestate -> ๋ฅผ ํ†ตํ•ด์„œ๋Š” ํ™”์„ฑ ๋ถ€๋™์‚ฐ ์†์„ฑ ๋ชฉ๋ก์„ ๋ชจ๋‘ ๊ฐ€์ ธ์˜จ๋‹ค.

     

    ์ด๋Ÿฌํ•œ URL์€ HTTP๋ฅผ ํ†ตํ•ด ๋„คํŠธ์›Œํฌ์—์„œ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ์‹๋ณ„๋œ ๋ฆฌ์†Œ์Šค(์˜ˆ๋ฅผ ๋“ค์–ด /login ๋˜๋Š” /realestate)๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.

    ์—”๋“œํฌ์ธํŠธ๋Š” ์„œ๋ฒ„์—์„œ ์‹คํ–‰๋˜๋Š” ์›น ์„œ๋น„์Šค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” URL์ด๋‹ค.

     

     

     

    URL์™€ URI์˜ ์ฐจ์ด

    ๋งŒ์•ฝ ๋‚ด๊ฐ€ ๊ฐ€๊ณ ์‹ถ์€ ๋ฒ ์ด๊ธ€ ๋ง›์ง‘์ด๋ผ๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์‹ถ๋‹ค๋ฉด?

    URL์€ ์ด ๋ฒ ์ด๊ธ€ ๊ฐ€๊ฒŒ๊ฐ€ ์–ด๋””์— ์œ„์น˜ํ•˜๋Š”์ง€๋ฅผ ์ •ํ™•ํžˆ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฃผ์†Œ์ด๋‹ค.

    URI๋Š” ์ฝ”๋ผ๋ฆฌ ๋ฒ ์ด๊ธ€์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ, ์ด ๋ฒ ์ด๊ธ€ ๊ฐ€๊ฒŒ๋ฅผ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฆ„์„ ๋งํ•œ๋‹ค. URI๋Š” ์œ„์น˜๋ฅผ ์ง์ ‘ ๊ฐ€๋ฆฌํ‚ค์ง€๋Š” ์•Š์ง€๋งŒ ๋ฒ ์ด๊ธ€ ๊ฐ€๊ฒŒ๋ฅผ ์‹๋ณ„ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

    ์›น ์„œ๋น„์Šค ์š”์ฒญ

    ์„œ๋ฒ„์— REST api ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ์—๋Š” HTTP ํ”„๋กœํ† ์ฝœ ๊ทœ์น™์„ ๋งž์ถฐ์„œ ์ „์†กํ•œ๋‹ค.

    ๊ฐ ์›น ์„œ๋น„์Šค ์š”์ฒญ์€ URI๋ฅผ ํฌํ•จํ•˜๊ณ  HTTP ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„์— ์ „์†ก๋œ๋‹ค.

     

    ์ผ๋ฐ˜์ ์ธ HTTP ์ž‘์—…

    - GET

    - POST

    - PUT 

    - DELETE

     

    ์›น ์„œ๋น„์Šค ์‘๋‹ต

    XML ๋˜๋Š” JSON ํ˜•ํƒœ ์ค‘ ํ•˜๋‚˜๋กœ ์‘๋‹ตํ•œ๋‹ค. 

    JSON์ด๋ž€ ํ‚ค-๊ฐ’ ์Œ์œผ๋กœ ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค

    Retrofit ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

    RESTful ์›น ์„œ๋น„์Šค(๋ฐฑ์—”๋“œ)์™€ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•ด Retrofit ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

     

     

     

    728x90