(iOS) ๋คํธ์ํฌ ํต์ , RESTful API , SOAP , JSON , XML
- -
๋คํธ์ํฌ ํต์ ๊ณผ API
๋คํธ์ํฌ ํต์ ์ ์ข ๋ฅ
- ์์ผ๋ฐฉ์์ ์ฐ๊ฒฐ์ฑ ํต์ : TCP/UDP
- ํ๋กํ ์ฝ์ ์ด์ฉํ ๋น์ฐ๊ฒฐ์ฑ ํต์ : HTTP, HTTPS, SMTP
์์ผ ๋ฐฉ์์ ์ฐ๊ฒฐ ์งํฅ ํต์
์์ผ์ ์ด์ฉํ ๋คํธ์ํฌ ํต์ ์ ๋ณดํต ์ ์์ค(Low-level) ํต์ ์ ํตํ์ฌ ๊ตฌํ๋๋ค. ์์ผ์ ์ ๊ตฌ๊ฐ ๊ฒฐํฉํ๋ ๊ฐ๋ ์ ๋ฐ์จ๊ฒ์ด๋ค. ์ฑ๊ณผ ์๋ฒ๊ฐ ์ฐ๊ฒฐ๋๋ฉด ํ์ชฝ์์ ์ฐ๊ฒฐ์ ๋๊ธฐ ์ ๊น์ง๋ ๊ณ์ ์ฐ๊ฒฐ์ด ์ ์ง๋๊ธฐ ๋๋ฌธ์ ์ฐ๊ฒฐ ์งํฅ ํต์ ์ด๋ผ๊ณ ํ๋ค.
๋ฐ๋ผ์ ์ฐ๊ฒฐ์ ๊ณ์ ์ ์งํ๊ธฐ ์ํด์ ๋คํธ์ํฌ ๋์ญ๋ ๋ง์ด ์๋ชจ๋๊ณ , ์๋ฒ ๋ถํ๋ ํฌ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ฐ์ผ ์๋น์ค์์๋ ๋ฉ์ ์ , ํ์ํตํ, RPG ๊ฒ์ ๋ฑ์์ ์ฃผ๋ก ์ฌ์ฉ๋๋ค.
TCP๋ ์๋๋ ๋๋ฆฌ์ง๋ง, ๋ฐ์ดํฐ ์ ์ค์ ๋ฐฉ์งํ๊ณ ์์ ํ ์ ์ก์ ๋ณด์ฅํ๋ค.
UDP๋ ์๋๋ ๋น ๋ฅด์ง๋ง, ๋ฐ์ดํฐ์ ์์ ํ ์ ์ก์ ๋ณด์ฅํ์ง ์๋๋ค.
๋น์ฐ๊ฒฐ ์งํฅ ํต์
๋น์ฐ๊ฒฐ์ฑ ํต์ ์ ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐฉ์์ ๋งํ๋ค. ๋ํ์ ์ผ๋ก HTTP/HTTPS ํ๋กํ ์ฝ์ด ์์ผ๋ฉฐ, ์น ์๋น์ค์ ์ฃผ๋ก ์ฌ์ฉ๋๋ค. ์์ผ ํต์ ๊ณผ๋ ๋ฌ๋ฆฌ ์์ฒญ์ด ๋ค์ด์ค๋ฉด ์๋ต์ ๋ณด๋ธํ ๋ฐ๋ก ์ฐ๊ฒฐ์ ๋๋๋ค. ๋ฐ๋ผ์ ๋น์ฐ๊ฒฐ์ฑ ์ด๋ผ๊ณ ํด์ ์ฐ๊ฒฐ์ด ์์ ์๋๊ฒ ์๋๋ผ, ์์ฒญ๊ณผ ์๋ต์ ์๋ฃํ ํ์ ์ฐ๊ฒฐ์ ์ ์งํ์ง ์์ ๋ฟ์ด๋ค.
์ฐ๊ฒฐ์ ์ ์งํ์ง ์๊ธฐ ๋๋ฌธ์ ์์ผ ๋ฐฉ์ฑ๊ฒ ๋นํด ์๋์ ์ผ๋ก ์๋๊ฐ ๋๋ฆฌ์ง๋ง, ๋คํธ์ํฌ ๋์ญ ์๋ชจ๋ฅผ ๋ง์ด ๊ฐ์์ํฌ ์ ์๊ณ , ์๋ฒ ๋ถํ๋ ๋ฎ์ถ ์ ์๋ค.
์น ์๋น์ค (Web service)
์ผ๋ฐ์ ์ผ๋ก HTML์ ์ด์ฉํ๋ ์น ํ์ด์ง๋ HTTP/HTTPS ํ๋กํ ์ฝ์ ์ฌ์ฉํ๋ค. ํ์ง๋ง ๋ฐ์ดํฐ๋ง ์ฃผ๊ณ ๋ฐ์ ์ ์๋๋ก ์ค๊ณ๋ ๋ชจ๋์ ๋งํ๋ค. ์น ์๋น์ค์๋ SOAP ๋ฐฉ์๊ณผ Restful๋ฐฉ์์ด ์๋ค.
SOAP (Simple Object Access Protocol)
- XML ํํ์ ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ก ๊ตฌํ๋ ํ๋กํ ์ฝ์ ๋งํ๋ค.
- SOAP ๋ฉ์์ง์ ๊ตฌ์กฐ๋ Envelop / Header / Body ์ธ๊ฐ์ง๋ก ๊ตฌ์ฑ๋๋ค.
- SOAP์ ํ์ค ํ๋กํ ์ฝ์ HTTP์ด์ง๋ง, ๋ค๋ฅธ ํ๋กํ ์ฝ๋ ๋ค์ํ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
- ๋งค์ฐ ๊ฐ๋จํ๊ณ ํ์ฅ์ด ์ฉ์ดํ๋ค.
- ํ๋ซํผ ๋ ๋ฆฝ์ ์ธ ํต์ ์ด๊ธฐ ๋๋ฌธ์ ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๊ฐ์๋ ๋ฐ์ดํฐ ํต์ ์ด ํธ๋ฆฌํ๋ค.
- ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ ์ฝ์ ๋ฐ์ง ์๋๋ค.
XML (Extensible Markup Language)
SOAP์๋ , RESTful API์๋ ๋ชจ๋ ์ฌ์ฉ๋ ์ ์๋ค. XML์ ๋ค๋ชฉ์ ๋งํฌ์ ์ธ์ด์ด๋ฉฐ, HTML์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํ ๋ชฉ์ ์ผ๋ก ๋ง๋ค์ด์ก๋ค. ๊ทธ๋์ HTML์ฒ๋ผ ํ๊ทธ(Tag)ํํ์ ๋งํฌ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ค. ํ๊ทธ๋ ๋ฐ์ดํฐ๋ค์ ๊ณ์ธต๊ตฌ์กฐ๋ฅผ ๋ํ๋ธ๋ค.
iOS์์๋ XML์ ํ์ฑํ๊ธฐ ์ํด XMLParser
๋ผ๋ ํ์ ๋ชจ๋์ ์ ๊ณตํ๊ณ ์๋ค.
RESTful(Representational State Transfer)
- REST๋ ์ค์ง์ ์ธ ๋คํธ์ํฌ ํ๋กํ ์ฝ์ ๋งํ๋ค๊ธฐ ๋ณด๋ค๋, ๋คํธ์ํฌ ์์์ ์ ์ํ๊ณ ์์์ ๋ํ ์ฃผ์ ๊ด๋ฆฌ๋ฐฉ๋ฒ์ ์๋ฏธํ๋ค.
- SOAP์๋ ๋ค๋ฅด๊ฒ Envelope/Header/Body์ ๊ฐ์ด ๋ณ๋์ ๊ท์ฝ ์์ด ์ฃผ๊ณ ๋ฐ์ผ๋ฉด ๋๋ค.
- URI ๋ ์ ๋ณด์ ๋ถ๋ฅ์ฒด๊ณ๋ง ํฌํจ๋์ด์ผ ํ๋ฉฐ, ๋์์ ๋ํ ๋ช ์ธ๋ ํฌํจํ์ง ์๋๊ฒ์ด ์ข๋ค.
RESTful API์์์ HTTP Method
URI์ ๋์์ ๊ดํ ๋ช ์ธ๋ฅผ ํ์ง ์๊ธฐ ๋๋ฌธ์ ํค๋๋ถ๋ถ์ HTTP Method๋ฅผ ์ฌ์ฉํ์ฌ ๋์์ ์ ์ํ๊ฒ ๋๋ค.
JSON (JavaScript Object Notation)
XML์ ํ๊ทธ์ ๊ณ์ธต๊ตฌ์กฐ๋ฅผ ๊ฐ์ ธ์ผํ๊ธฐ ๋๋ฌธ์ ํ ์คํธ์ ์๋ ๋ง์์ง๊ฒ ๋๊ณ ์ง์ผ์ผํ ๊ท์ฝ๋ค๋ ์๋ค. ์ด๋ฌํ ๋จ์ ์ ๊ทน๋ณตํ๊ธฐ ์ํด JSON์ด๋ผ๋ ๊ฒฝ๋ ๋ฐ์ดํฐ ๊ตํ ํ์์ด ๋ง๋ค์ด์ก๋ค. ์๋๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ฐ์ฒด ์์ฑ์ ํํํ๊ธฐ ์ํด ์ฌ์ฉ๋์์ง๋ง, ๋๋ถ๋ถ์ ์ธ์ด์์ JSONํฌ๋งท์ ์ง์ํ๊ฒ ๋์๊ณ , ๋ํ์ ์ธ ํ ์คํธ ๊ธฐ๋ฐ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก ์๋ฆฌ์ก๊ฒ๋์๋ค.
- JSON๊ฐ์ฒด๋ key์ Value๊ฐ ํ์์ด ๋๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ ๋์ ๋๋ฆฌํํ์ด๋ค.
- ๋ฌธ์์ด์ธ ๊ฒฝ์ฐ ์ฟผ์ฐํ (Quoting)์ด ํ์ํ๋ค. (๋ฐ์ดํ๋ก ๊ฐ์ธ์ฃผ๊ธฐ) , ์ ์๋ ์ค์, bool ํ์ ์ ํ์ ์์
- ๋๊ดํธ
[ ]
๋ฅผ ์ฌ์ฉํ์ฌ array๋ฅผ ์ฌ์ฉํ ์ ์๋ค. - JSON object ๋ด๋ถ์ ๋๋ค๋ฅธ object๋ฅผ ๋ฃ์ ์๋์๋ค.
{ }
{
"version": "https://jsonfeed.org/version/1",
"title": "My Example Feed",
"home_page_url": "https://example.org/",
"feed_url": "https://example.org/feed.json",
"items": [
{
"id": "2",
"content_text": "This is a second item.",
"url": "https://example.org/second-item"
},
{
"id": "1",
"content_html": "<p>Hello, world!</p>",
"url": "https://example.org/initial-post"
}
]
}
NSDictionary / NSMutableDictionary
Swift์์๋ ํ๋์ ๋์
๋๋ฆฌ์์ ๊ฐ์ ํ์
๋ค์ ์์๋ง ๋ค์ด๊ฐ ์ ์๋ค. ๋ฐ๋ผ์ Foundation ํ๋ ์์ํฌ์ ์ ์๋์ด์๋ NSDictionary
NSMutableDictionary
์๋ฃํ์ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ ํ์
์ ๋ํ ์์ค์์ด ์ฌ์ฉํ ์ ์๋ค.
(Mutable์ด ๋ถ์ ํ์ ์ ์์ ์ด ๊ฐ๋ฅํ๋ค๋ ๋ป์ด๋ค.)
'๐ฑ iOS > -- UIKit' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
(iOS) - App Life Cycle, App Delegate, Scene Delegate (0) | 2021.09.05 |
---|---|
(iOS) - WebView : Safari ํธ์ถ , WKWebView , SFSafariViewController (In app Browser) (0) | 2021.08.20 |
(iOS) - ์๋๋ฐ์ค (SandBox), chroot ๋? (0) | 2021.08.04 |
(iOS) ํ ์ด๋ธ ๋ทฐ (TableView) (0) | 2021.08.02 |
(iOS) ๋ธ๋ฆฌ๊ฒ์ดํธ ํจํด์ ํตํด ์ด์ ํ๋ฉด์ ๊ฐ ์ ๋ฌํ๊ธฐ (Delegate , Protocol) (0) | 2021.07.31 |
๋น์ ์ด ์ข์ํ ๋งํ ์ฝํ ์ธ
์์คํ ๊ณต๊ฐ ๊ฐ์ฌํฉ๋๋ค