Open-API / Public-API
[Public-APIs ๊นํ๋ธ] : open API๋ฅผ ์ ๊ณตํ๋ ์ฌ์ดํธ๋ฅผ ๋ชจ์๋์ ๋งํฌ
Auth
- apiKey: ํค(๋ก๊ทธ์ธ) ํ์
HTTPS
- yes: HTTPS๋ก ๋ฐ์ดํฐ ์์ฒญํด์ผํ๋ค.
CORS: Cross Origin Resource Sharing
- yes : ๋ค๋ฅธ origin์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค. ๋ฐ์ดํฐ ์กฐํ ๊ฐ๋ฅ!
- no : ๋ชจ๋ฐ์ผ์ด๋ ๋ฐฑ์๋ ๋ฑ ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ ํ๊ฒฝ์์ ์์ฒญํ๋ฉด ๊ฐ๋ฅ / ๋ธ๋ผ์ฐ์ ์์ ๋ฐ์ดํฐ ์กฐํ ์์ฒญ ๋ถ๊ฐ๋ฅ(๋ธ๋ผ์ฐ์ ๊ฐ ์ฐจ๋จํ ๊ฒ, ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ ํ๊ฒฝ์์ ์์ฒญํ๋ฉด ๋๋ค. ๋ชจ๋ฐ์ผ์์๋ ๊ฐ๋ฅ)
์ฌ์ฉ๋ฐฉ๋ฒ
rest-API๋ฅผ ์ฐ์ตํ ์ ์๋ postman์์ ๋ฏธ๋ฆฌ API๋ฅผ ์ฌ์ฉํด๋ณผ ์ ์๋ค.
[postman]
: ํฌ๋กฌ ์น์์ ์คํํ๋ ๊ฒ์ ๊ถ์ฅ! (๋ฐ์คํฌํ ์ฑ์ ๊ธ์๊ฐ ๊นจ์ง๊ฑฐ๋ ๋ฒ๊ทธ๊ฐ ์์ ์ ์๋ค.)
useEffect๋ฅผ ์ฌ์ฉํ์!
useEffect๋ฅผ ์ฐ์ง ์๊ณ ๋ฐ์์ setState๋ฅผ ํ๊ฒ๋๋ฉด ํ๋ฉด์ด ๋ ๋ ๋์๋ง์ ๊ฐ์ด ๋ฐ๋์ด์ ๋ ๋ ๋๋๋ ๊ฒ์ด ๋ฐ๋ณต๋๋ค.
useEffect๋ฅผ ์ฌ์ฉํ๋ฉด ์ต์ด ํ๋ฒ์ ๋ค์ ๋ ๋๋๊ฒ ์ง๋ง ๊ทธ ์ดํ์๋ ๋ค์ ์คํ๋์ง ์๋๋ค.
useEffect ์์ ํจ์๋ฅผ ๋ง๋ค์ด์ ํธ์ถํ์!
useEffect์๋ async๋ฅผ ๋ถ์ผ ์ ์๊ธฐ ๋๋ฌธ์, ์์ ํจ์๋ฅผ ํ๋ ๋ง๋ค๊ณ useEffect ์์์ ๊ทธ ํจ์๋ฅผ ํธ์ถํด์ ์ฌ์ฉํด์ผ ํ๋ค.
import axios from "axios";
import { useEffect, useState } from "react";
export default function OpenApiWithUseEffectPage() {
const [dogUrl, setDogUrl] = useState(""); // ์ด๋ฏธ์ง ์ฃผ์ ์ด๊ธฐ๊ฐ
// setDogUrl(result.data.message);
// ์ด๋ ๊ฒ useEffect์ ๋ฃ์ง ์๊ณ ์ฐ๋ฉด ์คํ๋์๋ง์ setState ์์ฒญ์ด ๊ฐ๊ณ ๋ฆฌ๋ ๋ ๋๊ณ ๋ ์์ฒญ์ด ๊ฐ๊ณ ๋ฆฌ๋ ๋๋๊ณ ~
useEffect(() => { // ํ์ด์ง์ ์ ์ํ์๋ง์ axios๊ฐ ์คํ๋๋๋ก useEffect๋ฅผ ์ฌ์ฉํ๋ค.
// async๋ ์ฌ๊ธฐ๋ ์ ๋ถ๋๋ค. ๊ทธ๋์ ์๋ฌด ํจ์๋ ๋ง๋ค์ด์ฃผ๊ณ ๊ฑฐ๊ธฐ์ async ๋ถ์ฌ์ ํจ์ ํธ์ถ
const aaa = async () => {
const result = await axios.get("https://dog.ceo/api/breeds/image/random");
setDogUrl(result.data.message); // ํ๋ฒ๋ง ์คํ๋๋ค. ์ด๋ ๊ฒ ํด๋ ๋ฆฌ๋ ๋๊ฐ ํ๋ฒ ๋ ์คํ๋๊ธด ํ๋ค.
};
aaa();
}, []);
return (
<div>
<img src={dogUrl} />
</div>
);
}
ํ๋๊ฐ๋ axios ๋ฐฉ์์ผ๋ก๋ ๊ด์ฐฎ๊ฒ ์ง๋ง,
rest ํํ์ ํ๋ก์ ํธ๋ฅผ ํ๊ฒ ๋๋ค๋ฉด GraphQL์ ํ ๋ Apollo Client๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ฒ๋ผ ์ธ ์ ์๊ฒ ํด์ฃผ๋ react query๋ฅผ ์ค์นํด์ ํ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
[React Query]
rest-api๋ฅผ graphQL์์ useQuery(), useMutation() ํ๋ฏ์ด ๊ฑฐ์ ๋์ผํ๊ฒ ์ธ ์ ์๊ฒ ํด์ค๋ค.
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(Open-API / Public-API), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@e_juhee/Open-API-Public-API์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ
์ธ ๋ฐ๊ฒฌ์ ์ ๋
(Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค