[project] ๐ŸŽฌMovyes: ์˜ํ™” ์ปค๋ฎค๋‹ˆํ‹ฐ React ํ”„๋กœ์ ํŠธ - ๋ฒˆ์™ธ(API ํŒŒ์ผ ๋ถ„๋ฆฌ)

์˜ค์˜ค๊ตฌยท2023๋…„ 1์›” 14์ผ
0

ํ›„๊ธฐ์—์„œ APIํŒŒ์ผ์„ ๋ถ„๋ฆฌํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ๋งํ–ˆ์—ˆ๋Š”๋ฐ ์–ด๋–ป๊ฒŒ ๋ถ„๋ฆฌํ–ˆ๋Š”์ง€ ์ •๋ฆฌํ•ด๋‘๋Š”๊ฒŒ ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

API ํŒŒ์ผ ๋ถ„๋ฆฌ

'์ด๋ ‡๊ฒŒ ์ €๋ ‡๊ฒŒํ•ด์„œ ์š”๋ ‡๊ฒŒ ๋ถ„๋ฆฌํ•˜๋ฉด ๋˜๊ฒ ๋„ค'
ํ•˜๊ณ  ํ•œ๋ฒˆ์— ๋ฐฉ๋ฒ•์„ ์ฐพ์œผ๋ฉด ์ข‹์œผ๋ จ๋งŒ... ์—ญ์‹œ๋‚˜ ๋จธ๋ฆฌ๋ฅผ ์‹ธ๋งค์•ผํ–ˆ๋‹ค.

๋ง‰์—ฐํ•˜๊ฒŒ ํด๋ž˜์Šค ํŒŒ์ผ๋กœ ๋งŒ๋“ค์–ด์„œ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋ ๊ฑฐ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์€ ๋– ์˜ฌ๋ž๋Š”๋ฐ ๊ทธ๋ž˜์„œ ํด๋ž˜์Šค๋กœ ์–ด๋–ป๊ฒŒ??? ๋ผ๋Š” ๋ถ€๋ถ„์ด ๋– ์˜ค๋ฅด์งˆ ์•Š์•˜๋‹ค.

๊ทธ๋ž˜์„œ ์ผ๋‹จ ๋…ธํŠธ์— ํ˜„์žฌ ํŒŒ์ผ์˜ ์ƒํƒœ์™€ ๋ฌธ์ œ์ ์ด ๋ญ๊ณ , ์–ด๋–ค ๋ถ€๋ถ„์ด ๊ณตํ†ต์ ์œผ๋กœ ํ•„์š”ํ•˜๊ณ  ์–ด๋–ค๋ถ€๋ถ„์ด ๋‚˜๋ˆ„์–ด์ ธ์•ผ ํ•˜๋Š”์ง€ ์ •๋ฆฌ๋ถ€ํ„ฐ ํ•ด๋ณด์•˜๋‹ค.

๊ธฐ์กด ์ƒํƒœ

  • firebase.jsx > auth, realtime database API ์‚ฌ์šฉ ๋ชจ์Œ

  • upload.jsx > storage API ์‚ฌ์šฉ ๋ชจ์Œ

๋ฌธ์ œ

  • ๋‘ ํŒŒ์ผ์— firebaseConfig๊ฐ€ ์ค‘๋ณต๋จ
const firebaseConfig = {
  apiKey: process.env.REACT_APP_FIREBASE_API_KEY,
  authDomain: process.env.REACT_APP_FIREBASE_AUTH_DOMAIN,
  databaseURL: process.env.REACT_APP_FIREBASE_DATABASE_URL,
  projectId: process.env.REACT_APP_FIREBASE_PROJECT_ID,
  appId: process.env.REACT_APP_FIREBASE_APP_ID,
  storageBucket: process.env.REACT_APP_FIREBASE_STORAGE_BUCKET,
};

const app = initializeApp(firebaseConfig);
const auth = getAuth(app);
const db = getDatabase(app);
const dbRef = ref(db);
const provider = new GoogleAuthProvider();

๊ฐ๊ฐ์˜ ํŒŒ์ผ์— ๋™์ผํ•œ ์„ค์ • ์ฝ”๋“œ๊ฐ€ ์ค‘๋ณต๋œ๋‹ค.

  • ๊ฐ ์„œ๋น„์Šค๊ฐ€ ๋ถ„๋ฆฌ๋˜์ง€ ์•Š์Œ

firebase.jsx ํŒŒ์ผ์˜ ๊ฒฝ์šฐ login, movie, pick, community ๋กœ์ง์ด ๋‹ค ๋ชจ์•„์ ธ์žˆ๋‹ค. ํŒŒ์ผ์ด ๋„ˆ๋ฌด ์ปค์กŒ๊ณ  ๊ฐ€๋…์„ฑ๋„ ๋งŽ์ด ๋–จ์–ด์ง„๋‹ค.


๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์ •๋ฆฌํ•ด๋ณด์ž๋ฉด,
๊ฐ ํŒŒ์ผ์„ ์„œ๋น„์Šค๋ณ„๋กœ ๊ตฌ๋ถ„ํ•˜๋˜ ๊ณตํ†ต ์„ค์ •์€ ํ•œ๋ฒˆ๋งŒ ์„ค์ •ํ•˜๊ณ  ๋‹ค๋ฅธํŒŒ์ผ๋“ค์€ ๊ทธ ์„ค์ •์„ ์ด์šฉํ•˜๊ฒŒ ํ•ด์•ผํ•œ๋‹ค.

ํ•ด๊ฒฐ

  • Firebaeํด๋ž˜์Šค > firebase ์„ค์ •
  • AttachmentServiceํด๋ž˜์Šค > storage ํŒŒ์ผ ์—…๋กœ๋“œ
  • AuthServiceํด๋ž˜์Šค > auth ์ธ์ฆ ๊ด€๋ จ
  • CommunityServiceํด๋ž˜์Šค > communityํŽ˜์ด์ง€์—์„œ ํ•„์š”ํ•œ api
  • movieServiceํด๋ž˜์Šค > ์˜ํ™” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” api

ํด๋ž˜์Šค ์ƒ์†์„ ํ™œ์šฉํ–ˆ๋‹ค.

Firebaseํด๋ž˜์Šค์—์„œ firebase ์„ค์ •์„ ํ•˜๋ฉด ๋‹ค๋ฅธ ํด๋ž˜์Šค๋Š” Fireaseํด๋ž˜์Šค๋ฅผ ์ƒ์†(extends)๋ฐ›์•„ ๊ฐ์ž ํ•„์š”ํ•œ ๋กœ์ง์„ ์ •์˜ํ•œ๋‹ค.

๊ณ ๋ฏผ

  • FirebaseConfig ์„ค์ •์„ ์ƒ์„ฑ์ž๋กœ ํ•ด์•ผํ•˜๋Š”๊ฐ€

์ฒ˜์Œ์—๋Š” ์ƒ์„ฑ์ž๋กœ ๋งŒ๋“ค์—ˆ์—ˆ๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ์ƒ๊ฐํ•ด๋ณด๋‹ˆ Firebaseํด๋ž˜์Šค๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค ๊ฒฝ์šฐ๋Š” ์—†๊ณ , ์„ค์‚ฌ ์žˆ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ๋”ฑํžˆ ์ƒ์„ฑ์ž ์ฃผ์ž…ํ•  ๋ถ€๋ถ„์€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ตณ์ด ์ƒ์„ฑ์ž๋ฅผ ์ •์˜ํ•  ํ•„์š”๊ฐ€ ์—†๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

  • ์–ด๋–ป๊ฒŒํ•˜๋ฉด ์ข€ ๋” ๊ฐ„ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ• ๊นŒ
    api๊ฐ€ ํ•„์š”ํ•œ ํŒŒ์ผ๋งˆ๋‹ค
const community = new Community();
community.add()
community.get()

์ด๋Ÿฐ์‹์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ์—” ๋„ˆ๋ฌด ๋ถˆํŽธํ•  ๊ฒƒ ๊ฐ™์•˜๋‹ค.

๊ทธ๋ž˜์„œ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ธ์Šคํ„ด์Šค์˜ ๋ฉค๋ฒ„๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” Hooks์„ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ Context๋กœ ๊ด€๋ฆฌ๋˜๋Š” auth์„œ๋น„์Šค๋ฅผ ์ œ์™ธํ•˜๊ณค ๋ชจ๋‘ redux๋กœ ๊ด€๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— hooks์„ ์‚ฌ์šฉํ•  ์ˆ˜๊ฐ€ ์—†์—ˆ๋‹ค. (hooks์€ ์ปดํฌ๋„ŒํŠธ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ)

์•„์‰ฌ์šด๋Œ€๋กœ auth๋Š” hooks์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ๋‚˜๋จธ์ง€๋Š” api๊ฐ€ ํ•„์š”ํ•œ ํŒŒ์ผ์—์„œ ๋น„๊ตฌ์กฐํ™” ํ• ๋‹น์„ ์ด์šฉํ–ˆ๋‹ค.

const movie = new MovieService();
const { add, search, get } = movie;

์ด๋ ‡๊ฒŒ ํ•˜๋Š”๊ฒŒ ์˜ฌ๋ฐ”๋ฅธ ๊ฑด์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ๋‚ด๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ์„ ์—์„œ ์ตœ๋Œ€ํ•œ ๊ธ์ •์ ์ธ ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐœ์„ ๋  ์ˆ˜ ์žˆ๋„๋ก ๋…ธ๋ ฅํ–ˆ๋‹ค.

ํ™•์‹คํ•œ๊ฑด ํŒŒ์ผ์„ ๋ถ„๋ฆฌํ•˜๋‹ˆ ์ค‘๋ณต ์ฝ”๋“œ๋„ ์ค„๊ณ  ์ „๋ณด๋‹ค ๊ฐ€๋…์„ฑ์€ ์ข‹์•„์ง„๊ฑฐ๊ฐ™๋‹ค.

์ฐธ๊ณ ์ž๋ฃŒ

โœ… ํด๋ž˜์Šค ๊ณต๋ถ€
https://ko.javascript.info/class-inheritance

profile
๋” ์ด์ƒ ๋ฏธ๋ฃฐ ์ˆ˜ ์—†๋‹ค

0๊ฐœ์˜ ๋Œ“๊ธ€