Skip to content

Files

Latest commit

74ad422 ยท Jan 15, 2022

History

History
119 lines (100 loc) ยท 2.79 KB

node-js04.md

File metadata and controls

119 lines (100 loc) ยท 2.79 KB

Node.js์—์„œ API ์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ

API ์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ

  • ์‹œ์Šคํ…œ์˜ ํŠน์ • ๋ฐ์ดํ„ฐ ํ˜น์€ ํŠน์ • ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ ๋‹ค๋ฅธ Third-party ์‹œ์Šคํ…œ์—๊ฒŒ
    ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ ๋…ธ์ถœ์‹œํ‚ค์ง€ ์•Š๊ณ , ํ˜น์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ง์ ‘ ์—ฐ๊ฒฐํ•ด์„œ
    ๋ฐ์ดํ„ฐ๋ฅผ ์ปจ๋„ฅ์…˜ํ•˜๊ณ  ์ปจํŠธ๋กคํ•˜๋Š” ๊ถŒํ•œ์„ ์ฃผ์ง€ ์•Š๊ณ  ์‹œ์Šคํ…œ์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‚˜
    ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•  ๋–„ API ์„œ๋ฒ„ ์‚ฌ์šฉ
  • REST API ๋ฐฉ์‹; ์›น HTTP๋ฅผ ์ด์šฉํ•ด์„œ API ์„œ๋ฒ„์— URL ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ ํ˜ธ์ถœ
const express = require('express');
const app = express();

const server = app.listen(3001, function (req, res) {
  console.log('Start Server : localhost:3001');
});

// : (์ฝœ๋ก ) ์žˆ๋Š” path์—๋Š” ์–ด๋–ค ๊ฐ’์ด๋“  ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ์Œ
app.get('/api/users/:type', async (req, res) => {
  let { type } = req.params;

  if (type == 'seoul') {
    let data = [
      {
        name: 'ํ™๊ธธ๋™',
        city: 'seoul',
      },
      {
        name: '๊น€์ฒ ์ˆ˜',
        city: 'seoul',
      },
    ];

    res.send(data);
  } else if (type == 'jeju') {
    let data = [
      {
        name: '๋ฐ•์ง€์„ฑ',
        city: 'jeju',
      },
      {
        name: '์†ํฅ๋ฏผ',
        city: 'jeju',
      },
    ];
    res.send(data);
  } else {
    res.send('Type is not correct.');
  }
});
  • key ์ถ”๊ฐ€ (์•„๋ฌด๋‚˜ ์ •๋ณด ๋ฐ›์•„๊ฐ€๋ฉด ์•ˆ๋จ)
    • uuid-apikey (API key ์ƒ์„ฑํ•ด์ฃผ๋Š” ๋ชจ๋“ˆ)
const express = require('express');
const app = express();
const uuidAPIKey = require('uuid-apikey');

const server = app.listen(3001, function (req, res) {
  console.log('Start Server : localhost:3001');
});

const key = {
  apiKey: '5PB37WM-5ACM5D2-QV7HB6X-GX5VDVV',
  uuid: '2d9633f2-2a99-42b4-becf-159b874bb6ef',
};

// : (์ฝœ๋ก ) ์žˆ๋Š” path์—๋Š” ์–ด๋–ค ๊ฐ’์ด๋“  ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ์Œ
app.get('/api/users/:apikey/:type', async (req, res) => {
  let { apikey, type } = req.params;

  if (!uuidAPIKey.isAPIKey(apikey) || !uuidAPIKey.check(apikey, key.uuid)) {
    res.send('apikey is not valid');
  } else {
    if (type == 'seoul') {
      let data = [
        {
          name: 'ํ™๊ธธ๋™',
          city: 'seoul',
        },
        {
          name: '๊น€์ฒ ์ˆ˜',
          city: 'seoul',
        },
      ];

      res.send(data);
    } else if (type == 'jeju') {
      let data = [
        {
          name: '๋ฐ•์ง€์„ฑ',
          city: 'jeju',
        },
        {
          name: '์†ํฅ๋ฏผ',
          city: 'jeju',
        },
      ];
      res.send(data);
    } else {
      res.send('Type is not correct.');
    }
  }
});

[Note]

  • express ๋ชจ๋“ˆ; node.js๋กœ ์›น ์„œ๋ฒ„ ๋น ๋ฅด๊ฒŒ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ๋ชจ๋“ˆ
  • Postman; ๊ฐœ๋ฐœํ•œ API๋ฅผ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋Š” API ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ ๋†’์—ฌ์ฃผ๋Š” ํ”Œ๋žซํผ

Reference