[๋ฐ๋ธŒ์ฝ”์Šค] ๋„์„œ ์กฐํšŒ API

2025. 5. 16. 17:58ยท๐Ÿ•Š๏ธํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค/ํ”„๋กœ์ ํŠธ
const conn = require("../mariadb");
const { StatusCodes } = require("http-status-codes");

const getAllBooks = (req, res) => {
  let sql = "SELECT * FROM books";
  conn.query(sql, (err, result) => {
    if (err) {
      return res.status(StatusCodes.BAD_REQUEST).end();
    }

    return res.status(StatusCodes.OK).json(result);
  });
};

const getBookById = (req, res) => {
  //parseInt ์ ์šฉ ์‹œ, id ์†์„ฑ์„ ๊ตฌ์กฐ ๋ถ„ํ•ด ์‹œ๋„
  //parseInt๋Š” ์ˆซ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ, ๊ตฌ์กฐ ๋ถ„ํ•ด ๋ถˆ๊ฐ€. '
  //parseInt๋Š” ๋ฌธ์ž์—ด์„ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๋Š”๋ฐ, ๊ฐ์ฒด์ธ req.parmas ์ „์ฒด๋ฅผ ์ „๋‹ฌํ•˜๋Š” ์˜ค๋ฅ˜๊ฐ€ ์žˆ์—ˆ๋‹ค.

  let { id } = req.params;

  let sql = "SELECT * FROM books WHERE id = ?";

  conn.query(sql, id, (err, result) => {
    if (err) {
      return res.status(StatusCodes.BAD_REQUEST).end();
    }

    if (result[0]) return res.status(StatusCodes.OK).json(result[0]);
    else return res.status(StatusCodes.NOT_FOUND).end();
  });
};

const getBooksByCategory = (req, res) => {};

module.exports = {
  getAllBooks,
  getBookById,
  getBooksByCategory,
};

 

 

์ฟผ๋ฆฌ๋กœ ์นดํ…Œ๊ณ ๋ฆฌ ์•„์ด๋”” ์กฐํšŒ

const getBooksByCategory = (req, res) => {
  let { category_id } = req.query;

  let sql = "SELECT * FROM books WHERE category_id = ?";
  conn.query(sql, category_id, (err, result) => {
    if (err) {
      return res.status(StatusCodes.BAD_REQUEST).end();
    }

    if (result.length) return res.status(StatusCodes.OK).json(result);
    else return res.status(StatusCodes.NOT_FOUND).end();
  });
};

 

/ router ๋ฐฐ์น˜์— ๋”ฐ๋ผ ์šฐ์„ ์ˆœ์œ„ ์„ค์ •->์ฟผ๋ฆฌ์— ์ƒ๊ด€์—†์ด ๋ชจ๋“  ๊ฒฐ๊ณผ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ ๋ฐœ์ƒ

router ๋ฐฐ์น˜ ์ˆœ์„œ ๋ณ€๊ฒฝ. ๋จผ์ € ์ฟผ๋ฆฌ ํ•„ํ„ฐ๋ง ํ›„ ์ „์ฒด ์กฐํšŒ ์ˆ˜ํ–‰

 

์ด๋Ÿฐ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด, ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” api ์š”์ฒญ์—๋Š” 400 bad request ์˜ค๋ฅ˜ ๋ฐ˜ํ™˜

์–ด๋–ป๊ฒŒ??

 

API๋ฅผ ํ•ฉ์นœ๋‹ค.

์ฟผ๋ฆฌ ์ŠคํŠธ๋ง์ด ์žˆ์œผ๋ฉด ์นดํ…Œ๊ณ ๋ฆฌ, ์—†์œผ๋ฉด ์ „์ฒด๋กœ ๋ถ„๊ธฐ์ฒ˜๋ฆฌ

const getAllBooks = (req, res) => {
  let { category_id } = req.query;

  if (category_id) {
    let sql = "SELECT * FROM books WHERE category_id = ?";
    conn.query(sql, category_id, (err, result) => {
      if (err) {
        return res.status(StatusCodes.BAD_REQUEST).end();
      }

      if (result.length) return res.status(StatusCodes.OK).json(result);
      else return res.status(StatusCodes.NOT_FOUND).end();
    });
  } else {
    let sql = "SELECT * FROM books";
    conn.query(sql, (err, result) => {
      if (err) {
        return res.status(StatusCodes.BAD_REQUEST).end();
      }

      return res.status(StatusCodes.OK).json(result);
    });
  }
};

 

์นดํ…Œ๊ณ ๋ฆฌ id์™€ ์นดํ…Œ๊ณ ๋ฆฌ๋ช… ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์ „์ฒด ์กฐํšŒ api ํ•„์š”

 

join์„ ์‚ฌ์šฉํ•˜์—ฌ, api ์š”์ฒญ ์‹œ id๊ฐ€ ์•„๋‹Œ ์นดํ…Œ๊ณ ๋ฆฌ๋ช…์œผ๋กœ ์‘๋‹ต ๋ณด๋‚ด๋„๋ก ์ฒ˜๋ฆฌ

 

 

'๐Ÿ•Š๏ธํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค > ํ”„๋กœ์ ํŠธ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋ฐ๋ธŒ์ฝ”์Šค] ์ข‹์•„์š” api ๊ตฌํ˜„  (0) 2025.05.19
[๋ฐ๋ธŒ์ฝ”์Šค] ๋„์„œ ๋ชฉ๋ก ์กฐํšŒ ํŽ˜์ด์ง• ์ ์šฉ API  (2) 2025.05.19
[๋ฐ๋ธŒ์ฝ”์Šค] ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ ๊ตฌํ˜„  (0) 2025.05.15
[๋ฐ๋ธŒ์ฝ”์Šค] ๋ถ์Šคํ† ์–ด ํ”„๋กœ์ ํŠธ #1. app.js ๋ฐ ์œ ์ € api ๋ผ์šฐํ„ฐ ํ…œํ”Œ๋ฆฟ  (0) 2025.05.13
[๋ฐ๋ธŒ์ฝ”์Šค] BOOK STORE ํ”„๋กœ์ ํŠธ API ์„ค๊ณ„(2)  (0) 2025.05.09
'๐Ÿ•Š๏ธํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค/ํ”„๋กœ์ ํŠธ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๋ฐ๋ธŒ์ฝ”์Šค] ์ข‹์•„์š” api ๊ตฌํ˜„
  • [๋ฐ๋ธŒ์ฝ”์Šค] ๋„์„œ ๋ชฉ๋ก ์กฐํšŒ ํŽ˜์ด์ง• ์ ์šฉ API
  • [๋ฐ๋ธŒ์ฝ”์Šค] ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ ๊ตฌํ˜„
  • [๋ฐ๋ธŒ์ฝ”์Šค] ๋ถ์Šคํ† ์–ด ํ”„๋กœ์ ํŠธ #1. app.js ๋ฐ ์œ ์ € api ๋ผ์šฐํ„ฐ ํ…œํ”Œ๋ฆฟ
ํ‚ํ‚์ž‰
ํ‚ํ‚์ž‰
๋ฟŒ๋ก ํŠธ ๊ฐœ๋ฐœ์ž(์ง€๋ง์ƒ)์˜ ํ’€์Šคํƒ ๊ฐœ๋ฐœ์ž ๋„์ „๊ธฐ
  • ํ‚ํ‚์ž‰
    monicx.dev
    ํ‚ํ‚์ž‰
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (86) N
      • ๐Ÿ–ฅ๏ธdevelop (11)
        • Github (2)
        • Frontend (4)
        • Backend (5)
        • Mobile (0)
        • CS (0)
        • Three.js (0)
        • Docker (0)
      • ๐Ÿ“•review (15)
        • ์ฑ… (10)
        • ํ–‰์‚ฌ (0)
        • ํšŒ๊ณ  (2)
      • โญproject (5)
        • petiary (2)
        • ๆšŽ่ฉ  (0)
        • ์ธํ„ด (2)
      • ๐Ÿ˜ถ‍๐ŸŒซ๏ธalgorithm (0)
      • ๐Ÿ’กtips (1)
      • ๐Ÿ˜Ždaily (10)
      • ๐Ÿ•น๏ธgame (0)
      • ๐Ÿ•Š๏ธํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค (44) N
        • TIL (26) N
        • ํ”„๋กœ์ ํŠธ (13) N
        • ํšŒ๊ณ  (5)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
  • ๋งํฌ

    • ๋ฒจ๋กœ๊ทธ
  • ์ธ๊ธฐ ๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
ํ‚ํ‚์ž‰
[๋ฐ๋ธŒ์ฝ”์Šค] ๋„์„œ ์กฐํšŒ API
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”