API
ํ์ต ํค์๋
URL๊ตฌ์กฐ
API
REST API
HTTP Method(CRUD)
GraphQL
Fetch API
Promise
ReableStream
Unicode
CORS
๋์ผ ์ถ์ฒ ์ ์ฑ
API
๐ URL ๊ตฌ์กฐ
Uniform Resource Locators ์ ์ฝ์
HTML,css ๋ฌธ์, ์ด๋ฏธ์ง ๋ฑ ๋ฆฌ์์์ ์์น๋ฅผ ๋ํ๋ด๋ ์ฃผ์
URL์ Scheme(=Protocol), Domain Name(=IP), Port, Path, Parameter, Anchor๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
Scheme(=Protocol)__
๋ธ๋ผ์ฐ์ ๊ฐ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ๊ธฐ ์ํด ์ฌ์ฉํด์ผ ํ๋ ํ๋กํ ์ฝ
์น์์๋ ๋ธ๋ผ์ฐ์ ์ ์๋ฒ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํ ๋ฐฉ์์ผ๋ก
HTTP/HTTPS
ํ๋กํ ์ฝ์ด ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ ๋จHTTPS/HTTP ์ธ์๋ mailto:(์ด๋ฉ์ผ ์ฃผ์๋ฅผ ์ง์ ํ๋ ํ๋กํ ์ฝ), ftp:(ํ์ผ์ ์ฃผ๊ณ ๋ฐ๋ ํ๋กํ ์ฝ) ๋ฑ ๋ค์ํ ํ๋กํ ์ฝ์ด ์กด์ฌ
HTTP(Hyper Text Transfer Protocol): ์น ๋ธ๋ผ์ฐ์ ์ ์น ์๋ฒ๊ฐ ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํด ๋ง๋ ํต์ ๊ท์ฝ
HTTPS(Hyper Text Transter Protocol Secure): HTTP์์ ๋ณด์์ด ๊ฐํ๋ ๋ฒ์
ํ๋กํ ์ฝ์ด๋? ์ค์ ์ปดํจํฐ์ ๋จ๋ง๊ธฐ ์ฌ์ด์์ ๋ฐ์ดํฐ ํต์ ์ ์ํํ๊ฒ ํ๊ธฐ ์ํด ํ์ํ ํต์ ๊ท์ฝ
Domain Name (๋๋ฉ์ธ)
์ปดํจํฐ์์ ํต์ ์์๋ ์ซ์๋ก ํํ๋ ์ฃผ์(=IP)๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์๊ฐ ์ก๊ฒ ๊ธฐ์ตํ๊ณ ์ฐพ์ ์ ์๋๋ก ๋ง๋ค์ด์ค ์๋น์ค๊ฐ ๋๋ฉ์ธ์ด๋ค.
https://www.naver.com (ํธ์คํธ๋ช (์ฐจ์์ ๋๋ฉ์ธ/์๋ธ ๋๋ฉ์ธ) - ๋๋ฉ์ธ๋ช - ์ต์์ ๋๋ฉ์ธ๋ช )
www: ํธ์คํธ๋ช (์ฐจ์์ ๋๋ฉ์ธ/์๋ธ ๋๋ฉ์ธ)
๋ณด์กฐ ๋๋ฉ์ธ์ผ๋ก์จ URL๋ก ์ ์กํ๊ฑฐ๋ ๊ณ์ ๋ด์ IP ์ฃผ์๋ ๋๋ ํ ๋ฆฌ๋ก ํฌ์๋ฉ๋๋ ๋๋ฉ์ธ ์ด๋ฆ์ ํ์ฅ์
naver: ๋๋ฉ์ธ๋ช
์์๋ก ์ง์ ํ ์ ์๋ ์ฌ์ดํธ์ ์ด๋ฆ
์ฌ์ฉ์์๊ฒ ์ฝ๊ฒ ๊ธฐ์ต ๋ ์ ์๋๋ก ์๋น์ค๋ช ์ผ๋ก ์ง์ ์์ ์ฌ์ฉ
com: ์ต์์ ๋๋ฉ์ธ๋ช
๋๋ฉ์ธ ๋ ๋ฒจ ์ค ๊ฐ์ฅ ๋์ ๋จ๊ณ์ ์๋ ๋๋ฉ์ธ
๋๋ฉ์ธ์ ๋ชฉ์ , ์ข ๋ฅ, ๊ตญ๊ฐ๋ฅผ ๋ํ๋ธ๋ค.
localhost : ์์ ์ ์ปดํจํฐ๋ฅผ ์๋ฏธ(์ปดํจํฐ ๋คํธ์ํฌ์์ ์ฌ์ฉํ๋ ๋ฃจํ๋ฐฑ)
Port
ํฌํธ ๋ฒํธ๋ฅผ ํตํด ์ด๋ค ์๋ฒ๋ฅผ ์ด์ฉํ ์ง ๊ฒฐ์ ํ๋ฉฐ, : (์ฝ๋ก ) ๋ค์ ๋์จ๋ค
URL์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ค ํฌํธ๋ฒํธ๊ฐ ์๋ต๋์ด ์๋ค.(HTTP์ ๊ฒฝ์ฐ 80, HTTPS์ ๊ฒฝ์ฐ 443)
Path
ํ์ผ์ ๊ฒฝ๋ก
/
๋ค์ ๋์จ๋ค.
Parameter
์ฟผ๋ฆฌ ์คํธ๋ง
? ๋ฌผ์ํ ๋ค์ ๋์ด๋๊ณ , &๊ธฐํธ๋ก ๊ตฌ๋ถ๋์ด ์ฌ๋ฌ๊ฐ๊ฐ ์กด์ฌ ํ ์ ์๋ค.
?key=value&key=value
๐ API๋?
Application Programming Interface
์๋ก ๋ค๋ฅธ ์ดํ๋ฆฌ์ผ์ด์ (ํ๋ก๊ทธ๋จ)์ด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋๋ก ๋์์ฃผ๋ ๋งค๊ฐ์ฒด(= ์ผ์ข ์ ๊ท์ฝ)
ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ฌ์ด์ ๋ฐ์ดํฐ ์ ์ก ํต์ ์ ์ํ ๊ท์น์ด๋ ๋ฃฐ,
๋ํ์ ์ผ๋ก ์นAPI, ๋ผ์ด๋ธ๋ฌ๋ฆฌ API๊ฐ ์๋ค.
๐ REST API ๋?
REST ๊ธฐ๋ฐ์ผ๋ก ์๋น์ค API๋ฅผ ๊ตฌํํ ๊ฒ
REST๋ ์์ ๊ธฐ๋ฐ์ ๊ตฌ์กฐ(ROA, Resource Oriented Architecture) ์ค๊ณ์ ์ค์ฌ์ Resource๊ฐ ์๊ณ HTTP Method๋ฅผ ํตํด Resource๋ฅผ ์ฒ๋ฆฌํ๋๋ก ์ค๊ณ๋ ์ํคํ ์ณ๋ฅผ ์๋ฏธ
URL๊ณผ HTTP ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฒด์ ์ธ ๊ตฌ์กฐ๋ฅผ ๋ํ๋ด๋ ๊ต์ฅํ ๊ฐ๋จํ ๊ตฌ์กฐ โ ๊ฐ๋ฐ์ ์นํ์ ,๋จ์ํจ
์บ์ฑ์ ์ง์ํ๊ธฐ์ ์๋ฒ์ ๋ํ ์์ฒญ ์๋ฅผ ์ค์์ผ๋ก์จ API์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์๋ค. โ ์๋ต์๋ ์บ์ฑ ๊ฐ๋ฅ ์ฌ๋ถ์ ๊ธฐ๊ฐ์ ๋ํ๋ด๋ ์บ์ฑ ํค๋๊ฐ ํฌํจ๋์ด ์๊ธฐ ๋๋ฌธ
๊ตฌ์ถ, ํ ์คํธ ๋ฐ ๋ฌธ์ํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋ง์ ๋๊ตฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ผ๋ฏ๋ก ๊ฐ๋ฐ ๋ฐ ์ ์ง๋ณด์๊ฐ ๋ ์ฝ๋ค.
์น ๋ธ๋ผ์ฐ์ , ๋ชจ๋ฐ์ผ ์ฅ์น ๋ฐ IoT ์ฅ์น ๋ฑ ๊ด๋ฒ์ํ ํด๋ผ์ด์ธํธ ๋ฐ ์๋ฒ์ ํธํ์ด ๊ฐ๋ฅ โ ํธํ์ฑ ์ฐ์
๊ฐ ๋ฆฌ์์ค๋ ๊ณ ์ ์๋ณ์(URI)๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ํ์ค HTTP ๋ฉ์๋(GET, POST, PUT, DELETE) ์งํฉ์ ์ฌ์ฉํ์ฌ ์กฐ์ํ ์ ์์ต๋๋ค. โ ๋ฆฌ์์ค ์งํฅ์
๐ค HTTP Method(CRUD)
์๋ฒ๊ฐ ์ํ ํด์ผ ํ ๋์์ ์ง์ ํ์ฌ ์์ฒญ(request)์ ๋ณด๋ด๋ ๋ฐฉ๋ฒ
์ฃผ๋ก ์ฌ์ฉํ๋ ๋ฉ์๋ : GET,POST,PUT,DELETE + PATCH
Read๋ Collection(๋ณต์)๊ณผ Item(Element)(๋จ์)๋ก ๋๋จ
Create (Collection Pattern ํ์ฉ) โ
POST
/products โ ์ํ ์ถ๊ฐ (JSON ์ ๋ณด ํจ๊ป ์ ๋ฌ)Read (Collection) โ
GET
/products โ ์ํ ๋ชฉ๋ก ํ์ธRead (Item) โ
GET
/products/{id} โ ํน์ ์ํ ์ ๋ณด ํ์ธUpdate (Item) โ
PUT(๋ฎ์ด์ฐ๊ธฐ)
๋๋PATCH(์ผ๋ถ ๋ณ๊ฒฝ)
/products/{id} โ ํน์ ์ํ ์ ๋ณด ๋ณ๊ฒฝ (JSON ์ ๋ณด ํจ๊ป ์ ๋ฌ)Delete (Item) โ
DELETE
/products/{id} โ ํน์ ์ํ ์ญ์
๐ GraphQL ๋?
API๋ฅผ ์ํ ์ฟผ๋ฆฌ ์ธ์ด(Query Language)์ด๋ฉฐ ํ์ ์์คํ ์ ์ฌ์ฉํ์ฌ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ ์๋ฒ์ฌ์ด๋ ๋ฐํ์
ํด๋ผ์ด์ธํธ๊ฐ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ ํํ ์ง์ ํ ์ ์์ผ๋ฏ๋ก ๋คํธ์ํฌ๋ฅผ ํตํด ์ ์ก๋๋ ๋ฐ์ดํฐ์ ์์ ์ค์ด๊ณ API์ ํจ์จ์ฑ์ ๋์ผ ์ ์๋ค.
ํด๋ผ์ด์ธํธ ์ฌ์ด๋์์ ์ฌ๋ฌ ๋ฆฌ์์ค์ ๊ด๊ณ๋ฅผ ํฌํจํ๋ ๋ณต์กํ ์ฟผ๋ฆฌ๋ฅผ ๋ง๋ค ์๋ ์์ผ๋ฉฐ, ์ฟผ๋ฆฌ ์ค์ฒฉ์ ํตํด ๊ณ์ธต์ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ ์ ์๋ค. โ ์ ์ฐํ ์ฟผ๋ฆฌ
๋ฒ์ ๊ด๋ฆฌ ์ ์ฉ
RestAPI์ ๊ฒฝ์ฐ ๋ฐฑ์๋ ์ธก์์ ๋ชจ๋ URL์ ๊ฐ๋ฐํ์ง ์์ผ๋ฉด ์์ ์์ฒด๊ฐ ์ฌ์ค์ ๋ถ๊ฐ๋ฅ ํ์ง๋ง, ์ฟผ๋ฆฌ ํ ์คํ ์ ์ํ GraphiQL๊ณผ ๊ฐ์ ์ฌ๋ฌ ๋๊ตฌ๋ฅผ ์ง์ํ์ฌ ๊ฐ๋ฐ ์๊ฐ์ ๋จ์ถํ ์ ์๋ค.
REST API vs GraphQL
RestAPI์ ๊ฒฝ์ฐ ๋ชจ๋ ์๋ํฌ์ธํธ๋ฅผ ์ผ์ผ์ด ๊ฐ๋ฐํ๊ณ ์ฌ๋ฌ ๊ฒฝ์ฐ์ ์๋ฅผ ๋์ํด์ผ ํ๊ธฐ์ ๊ฐ๋ฐ ์๋๊ฐ ์๋์ ์ผ๋ก ๋๋ฆฌ๊ณ , GraphQL์ ๊ฒฝ์ฐ์๋ ์์น์ ์ผ๋ก Multipart ๋ฐฉ์์ ์ ์ก์ด ํ์ฉ๋์ง ์๊ธฐ์ ์ด๋ฏธ์ง, ์์ ๋ฑ์ ์ฒ๋ฆฌ์ ๊ต์ฅํ ์ฝํ ๋ชจ์ต์ ๋ณด์ธ๋ค.
โ ์ธ์ฆ, ์ธ๋ถ ์๋ฒ์์ ์ฐ๋ ๋ฑ์ Rest API๋ฅผ ์ฌ์ฉํ๊ณ , ๋น๊ต์ ๊ฐ๋จํ ์ ๋ณด๋ฅผ ์ก์์ ํ๋ ๊ฒฝ์ฐ์๋ GraphQL์ ์ฌ์ฉํ์ฌ ์ ์ ํ๊ฒ ๊ฐ๋ฐ์ ๊ท ํ์ ๋ง์ถ์ด ๋ณด์!
โ๐ป ์ ๋ฆฌ
REST API ์ GraphQL ๋ ๋ค ํด๋ผ์ด์ธํธ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก๋ถํฐ ๊ฐ์ ธ์ค๋ ๊ฒ์ ๋ชฉ์ ํ๋ค.
API ๊ตฌ์กฐ๋ฅผ ์ค๊ณํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ฐฉ์
GraphQL๊ณผ REST์ ์ฅ๋จ์ ์ ํ์ ํด ์๋น์ค์ ๋ง๋ ๋ฐฉ์์ ๊ณ ๋ฅด๋ ๊ฒ์ด ์ค์
๐ ์ฐธ๊ณ
๐ Fetch API
์น ๋ธ๋ผ์ฐ์ ์์ ์ฌ์ฉํ๋ Web API
ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ )์ธก์์ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
๋ธ๋ผ์ฐ์ ์ ๋ด์ฅ๋
fetch()
ํจ์๋ฅผ ์ด์ฉํ๋ค.
๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ๋ฒ ์คํ
fetch ํจ์๋ HTTP response ๊ฐ์ฒด๋ฅผ ๋ํํ Promise ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค.
๋ฐ๋ผ์ ํ๋ก๋ฏธ์ค์ ํ์ ์ฒ๋ฆฌ ๋ฉ์๋์ธ then(await)์ ์ฌ์ฉํ์ฌ resolveํ ๊ฐ์ฒด๋ฅผ ์ ๋ฌ๋ฐ์ ์ ์๋ค.
fetch ํจ์๋ก ๋ฐ์ Response ๊ฐ์ฒด์๋ HTTP ์๋ต์ ๋ํ๋ด๋ ํ๋กํผํฐ๋ค์ด ์๋ค. Response ๊ฐ์ฒด์ body์๋ReadableStream
์ ๋ด์ฉ์ด ๋ค์ด์๋ค.
.getReader()๋ฅผ ํตํด Reader ๊ฐ์ฒด๋ฅผ ์ป์ด ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์๋ค. ์ด๋ chunk.value๋ Uint8Array ํ์ ์ผ๋ก string์ผ๋ก ๋ฐ๊ฟ์ค์ผ ํ๋ค. TextDecoder๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ์์ด๋ก ์ฝ์ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
json() ๋ด์ฅ ํจ์๊ฐ ์๋๋ฐ, res.json ๋ฉ์๋ ์ฌ์ฉ ์ HTTP ์๋ต body ํ ์คํธ๋ฅผ JSON ํ์์ผ๋ก ๋ฐ๊พผ ํ๋ก๋ฏธ์ค๋ฅผ ๋ฐํํ๋ค. (์์ฃผ ์ผ๋ .then(res โ res.json())์ ์๋ฏธ์๋ค)
๐ Promoise๋?
๋น๋๊ธฐ ์ฐ์ฐ์ด ์ข ๋ฃ๋ ์ดํ์ ๊ฒฐ๊ณผ ๊ฐ๊ณผ ์คํจ ์ฌ์ ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์ฐ๊ฒฐํ ์ ์๋ค.
ํ๋ก๋ฏธ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ๋น๋๊ธฐ ๋ฉ์๋์์ ๋ง์น ๋๊ธฐ ๋ฉ์๋์ฒ๋ผ ๊ฐ์ ๋ฐํํ ์ ์๋ค.
๋ค๋ง ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ ๊ฒ์ด ์๋๊ณ , ๋ฏธ๋์ ์ด๋ค ์์ ์ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํ๊ฒ ๋ค๋ '์ฝ์'(ํ๋ก๋ฏธ์ค)์ ๋ฐํํ๋ค.
๐ CORS(Cross-Origin Resource Sharing)
๊ต์ฐจ ์ถ์ฒ ๋ฆฌ์์ค ๊ณต์
์ถ์ฒ๋ '์ค๋ฆฌ์งorigin'์ ๋ฒ์ญ์ ํํ์ผ๋ก URL์์ ๋๋ฉ์ธ๋ง ๋ปํ๋๊ฒ ์๋๋ผ ํ๋กํ ์ฝ๊ณผํฌํธ๊น์ง ํฌํจํ๋ ๊ฐ๋
์ถ์ฒ๋ฅผ ๊ตฌ์ฑํ๋ ์ธ ์์ ํ๋กํ ์ฝ/๋๋ฉ์ธ(ํธ์คํธ์ด๋ฆ)/ํฌํธ๋ก ์ด์ค ํ๋๋ผ๋ ๋ค๋ฅด๋ฉด CORS ์๋ฌ๋ฅผ ๋ง๋๊ฒ ๋๋ค.
CORS๋ ์๋ก ๋ค๋ฅธ ์ถ์ฒ๋ผ๋ ๋ฆฌ์์ค ์์ฒญ,์๋ต์ ํ์ฉํ ์ ์๋๋ก ํ๋ ์ ์ฑ ์ ์๋ฏธ
์ฆ, '์ถ์ฒ๊ฐ ๊ต์ฐจํ๋ค'๋ผ๋ ์๋ฏธ๋ ๋ฆฌ์์ค๋ฅผ ์ฃผ๊ณ ๋ฐ์ผ๋ ค๋ '๋ ์ถ์ฒ๊ฐ ๋ค๋ฅด๋ค๋ ์๋ฏธ' CORS๋ฅผ ์ค์ ํ๋ค๋ ๊ฑด '์ถ์ฒ๊ฐ ๋ค๋ฅธ ์๋ฒ๊ฐ์ ๋ฆฌ์์ค ๊ณต์ '๋ฅผ ํ์ฉํ๋ค๋ ์๋ฏธ์ด๋ค.
โญ๏ธ ์ฌ๊ธฐ์ ์ค์ํ ์ฌ์ค!!
์ด๋ ๊ฒ ์ถ์ฒ๋ฅผ ๋น๊ตํ๋ ๋ก์ง์ด ์๋ฒ์ ๊ตฌํ๋ ์คํ์ด ์๋๋ผ ๋ธ๋ผ์ฐ์ ์ ๊ตฌํ๋์ด ์๋ ์คํ์ด๋ผ๋ ๊ฒ์ด๋ค.
๋ง์ฝ ์ฐ๋ฆฌ๊ฐ CORS ์ ์ฑ ์ ์ํํ๋ ๋ฆฌ์์ค ์์ฒญ์ ํ๋๋ ํด๋น ์๋ฒ๊ฐ ๊ฐ์ ์ถ์ฒ์์ ๋ณด๋ธ ์์ฒญ๋ง ๋ฐ๊ฒ ๋ค๋ ๋ก์ง์ ๊ฐ์ง๊ณ ์๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ๋ฉด ์๋ฒ๋ ์ ์์ ์ผ๋ก ์๋ต์ ํ๊ณ , ์ดํ ๋ธ๋ผ์ฐ์ ๊ฐ ์ด ์๋ต์ ๋ถ์ํด CORS ์ ์ฑ ์๋ฐ์ด๋ผ๊ณ ํ๋จ๋๋ฉด ๊ทธ ์๋ต์ ์ฌ์ฉํ์ง ์๋๋ค.
์ฆ, CORS๋ ๋ธ๋ผ์ฐ์ ์ ๊ตฌํ ์คํ์ ํฌํจ๋๋ ์ ์ฑ ์ด๊ธฐ ๋๋ฌธ์, ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํ์ง ์๊ณ ์๋ฒ๊ฐ ํต์ ์ ํ ๋๋ ์ด ์ ์ฑ ์ด ์ ์ฉ๋์ง ์๋๋ค. CORS ์ ์ฑ ์ ์๋ฐํ๋ ๋ฆฌ์์ค ์์ฒญ ๋๋ฌธ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค๊ณ ํด๋ ์๋ฒ ์ชฝ ๋ก๊ทธ์๋ ์ ์์ ์ผ๋ก ์๋ต์ ํ๋ค๋ ๋ก๊ทธ๊ฐ ๋จ๊ธฐ ๋๋ฌธ์ CORS์ ๋์๋ฐฉ์์ ์๊ณ ์์ด์ผ ํ๋ค.
๐ค CORS๋ฅผ ํด๊ฒฐํ ์ ์๋ ๋ฐฉ๋ฒ์?
๊ทผ๋ณธ์ ์ผ๋ก๋ ๋ฐฑ์๋ ๊ฐ๋ฐ์๊ฐ ์ดํ๋ฆฌ์ผ์ด์ ์ ์๋ต ํค๋์ ์ฌ๋ฐ๋ฅธ
Acccess-Control-Allow-Origin
์ด ๋ด๋ ค์ฌ ์ ์๋๋ก ์ธํ ํด์ค์ผ ํ๋ค.ํ๋ก์ ์๋ฒ ์ฌ์ฉํ๊ธฐ
๐ ์ฐธ๊ณ
Last updated