๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋ฐ๋ธŒ์ฝ”์Šค

๋žœ๋ค ๋ฐ์ดํ„ฐ ์ƒ์„ฑ API

๐Ÿš€ ์ฝ”๋“œ ํ€„๋ฆฌํ‹ฐ ์˜ฌ๋ฆฌ๊ธฐ

1๏ธโƒฃ response ํฌ๋งท ํ†ต์ผ (snake > camel) , status code ...

 

2๏ธโƒฃ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ค‘๋ณต ์ฝ”๋“œ => ๋ชจ๋“ˆํ™”

 

ex. UserController / User ( ๋ฐ์ดํ„ฐ ๋ชจ๋“ˆ = Model ) - CRUD

cf. DB ๋ชจ๋“ˆ: mysql => ๋ชฝ๊ตฌ์Šค, ์‹œํ€„๋ผ์ด์ฆˆ

 

3๏ธโƒฃ ํŒจํ‚ค์ง€ ๊ตฌ์กฐ

 

1) Router : ๊ฒฝ๊ณ  (URI, URL) ์™€ HTTP method ๋กœ ์š”์ฒญ์— ๋”ฐ๋ฅธ ๊ฒฝ๋กœ๋ฅผ ์ฐพ์•„์ฃผ๋Š” ์—ญํ• 

2) Controller: ๊ธธ ๋งค๋‹ˆ์ € - ์š”์ฒญ์„ ํ™˜์˜, ์ง์ ‘ ์ผ์„ ํ•˜์ง€ ์•Š์Œ

3) Service : ์ง์ ‘ ์ผ์„ ํ•˜๊ณ  ex. ์–ด๋–ค ์ฟผ๋ฆฌ๋ฅผ ๋ถ€๋ฅผ์ง€

4) Model : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์†Œํ†ต => query ์ง‘ํ•ฉ

 

4๏ธโƒฃ โœจ ์˜ˆ์™ธ์ฒ˜๋ฆฌ( try / catch) ๋” ํ•ด์ค„ ๊ณณ ์—†๋Š”์ง€

 

5๏ธโƒฃ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์ถ”๊ฐ€

 

6๏ธโƒฃ jwt (์‹ฌํ™”) : access ํ† ํฐ์ด ๋งŒ๋ฃŒ๊ฐ€ ๋˜๋ฉด, '๋กœ๊ทธ์ธ ์—ฐ์žฅ?' 

 

* ๋กœ๊ทธ์ธ ์‹œ access token(30m) , refresh token(24h) 

1) access token : ๋กœ๊ทธ์ธํ•œ ์‚ฌ๋žŒ์ธ์ง€ ์ธ์ฆ

2) refresh token : ๋กœ๊ทธ์ธ ์—ฐ์žฅํ•˜๋Š” ์šฉ๋„ 


๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป ๋žœ๋ค ๋ฐ์ดํ„ฐ ์ƒ์„ฑ API ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

๊ฐœ์š”

๋žœ๋ค ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•ด์ฃผ๋Š” API (์™ธ๋ถ€ API) ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ "๊ฐ€์งœ ์‚ฌ์šฉ์ž ์ •๋ณด ์ƒ์„ฑ" API

 

๋‚ด์šฉ 

1) ๋žœ๋ค ๋ฐ์ดํ„ฐ ์ƒ์„ฑ API (๊ฐ€์งœ ์‚ฌ์šฉ์ž, ๊ฐ€์งœ ์ƒํ’ˆ, ๊ฐ€์งœ ์ „ํ™”๋ฒˆํ˜ธ ๋“ฑ๋“ฑ .. )

2) ๊ฐ€์งœ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์ƒ์„ฑํ•˜๋Š” Express ์›น /์•ฑ API 

 

* ๋žœ๋ค ๋ฐ์ดํ„ฐ ์ƒ์„ฑ API 

 

 faker  ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

 

์›ํ•˜๋Š” ์‚ฌ์šฉ์ž ์ˆ˜๋งŒํผ ๊ฐ€์งœ ๋ฐ์ดํ„ฐ ๋งŒ๋“ค๊ธฐ

const express = require('express');
const app = express();
const { faker } = require('@faker-js/faker');

// localhost:5555/fake/users

app.get('/fake/users/', (req, res) => {
  const {num} = req.query;

  let index = 1;
  let users = [];
  while (index <= num) {
    users.push({
      email: faker.internet.email(),
      password: faker.internet.password(),
      fullName: faker.person.fullName(),
      contact: faker.phone.number()
    });
    index++;
  }
  res.status(200).json(users);
});

app.listen(5555);

query ๋กœ ์ž…๋ ฅ ๋ฐ›์€ ์ˆซ์ž์ธ 3๊ฐœ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒ์„ฑ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 


๐ŸŒŸ ๋ฐฐ์šด ์ 

์˜ค๋Š˜ ๋“œ๋””์–ด ๊ธธ๊ณ  ๊ธธ์—ˆ๋˜ ๋„์„œ ํŒ๋งค ์‡ผํ•‘๋ชฐ API ๊ตฌํ˜„์„ ๋งˆ์ณค๋‹ค. ๋” ์ด์ƒ ๋ณด์™„ํ•  ์ ์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ, ์ธ๊ฐ•์„ ๋“ฃ๋‹ค ๋ณด๋‹ˆ ์ฝ”๋“œ์˜ ํ€„๋ฆฌํ‹ฐ๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด ๊ณ ์น  ๋ถ€๋ถ„์ด ๋งŽ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ์—ญ์‹œ ํ•œ ๋ฒˆ์— ์™„๋ฒฝํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ค์šด ์ผ์ธ ๊ฒƒ ๊ฐ™๋‹ค. ํ•ญ์ƒ ์ฝ”๋“œ๋ฅผ ๋” ๊น”๋”ํ•˜๊ฒŒ ์ž‘์„ฑํ•  ๋ฐฉ๋ฒ•๊ณผ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋ฅผ ๊ณ ๋ฏผํ•˜๋Š” ๊ฒƒ์ด ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ค‘์š”ํ•œ ์ž์„ธ๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค. ๋˜ํ•œ, ์˜ค๋Š˜์€ ๋žœ๋ค ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๋Š” API๋„ ์ƒˆ๋กญ๊ฒŒ ๋ฐฐ์› ๋Š”๋ฐ, ํ”„๋กœ์ ํŠธ์— ์ž˜ ํ™œ์šฉํ•˜๋ฉด ๋งค์šฐ ์œ ์šฉํ•  ๊ฒƒ ๊ฐ™๋‹ค.

'๋ฐ๋ธŒ์ฝ”์Šค' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(2)  (3) 2024.10.23
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ  (2) 2024.10.21
Express-generator ๊ตฌ์กฐ  (2) 2024.10.02
JWT  (6) 2024.09.25
์œ ํšจ์„ฑ ๊ฒ€์‚ฌ  (1) 2024.09.24