🐸minzzi
Minzzi야
🐸minzzi
전체 방문자
오늘
어제
  • 분류 전체보기 (130)
    • 오류해결 (14)
    • FE (35)
      • Next.js (16)
      • React (4)
      • React Native (0)
      • TypeScript (1)
      • JavaScript (14)
    • BE (0)
      • Nest.js (0)
    • 데브코스 (7)
    • 웹 프로젝트 (5)
    • CS (28)
      • Algorithm (5)
      • Python (4)
      • C++ (2)
      • Operating System (4)
      • Computer Networking (3)
      • Data Structure (1)
      • Machine Learning (3)
      • Tip (6)
    • Github (4)
    • Flutter (3)
      • 프로젝트 (3)
    • Private (27)
      • 회고 (7)
      • 면접 (17)
    • 개발도서 (6)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • 오블완
  • 면접
  • layout shift
  • 원시타입
  • reflow
  • 티스토리챌린지
  • 콜스택
  • 이벤트루프
  • 호이스팅
  • next.js
  • 실행컨텍스트
  • 자바스크립트
  • 힙영역
  • 트러블슈팅
  • 이미지 최적화
  • react
  • SSR
  • 실행컨택스트
  • 모던리액트딥다이브
  • 렉시컬

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
🐸minzzi

Minzzi야

express에서 API 구현시 URL parameters 받는 방법
오류해결

express에서 API 구현시 URL parameters 받는 방법

2024. 5. 29. 09:29

문제 해결 요약

URL parameters 가져올때는 아래 방법으로만 가져와야 한다.

API 주소는 /games/:gameId로 한다.

const id = req.params.gameId;
const game_id = req.params.gameId;
const {gameId} = req.params;

API 구현 공부를 하다가 URL parameters을 인식하지 못하는 문제가 발생했다.

 

아래 코드가 GET method를 사용하여 gameId를 가진 게임의 상세 정보를 가지고 오는 API 구현 코드이다. 

// games.js
const express = require("express");
const router = express.Router();
const {gameDetail} = require('../controller/GameController');

router.get('./:gameId', gameDetail);

 

코드에서 보면 알 수 있듯이 API의 콜백함수는 controller로 나눠주었다.

// GameController.js
const conn = require("../mariadb");
const { StatusCodes } = require("http-status-codes");

const gameDetail = (req, res) => {
	
    let {id} = req.params;
    id = parseInt(id);
    
    let sql = "SELECT * FROM games WHERE id = ?";
    conn.query(sql, id, (err, results) => {
		...
	});
};

module.exports = { gameDetail };

얼핏 기억하기로 request에서 parameters를 받아올 때 두가지 방법이 있다.
 
API 주소는 /games/:gameId로 한다.
 
첫번째 방법은 설정해주었던 parameter 변수를 가져오는것이다.

const id = req.params.gameId;
const game_id = req.params.gameId;

이때 id와 game_id와 같이 할당하는 변수명은 자유롭게 해줘도 된다.
 

두번째 방법은 설정한 paramete 변수를 비구조화를 이용하여 사용하는 방식이다.

const {gameId} = req.params;

이때 중괄호는 꼭 사용해서 비구조화로 만들고, 설정해놓은 parameter 변수명을 그대로 사용해주어야 한다. 


나의 경우에는 두번째 방법을 사용했음에도 미리 저장해놓은 변수명이 아닌 그냥 id를 사용했던 것이 문제였다.
Controller로 콜백함수를 모듈화 했기 때문에 주소가 보이지 않아 실수를 한번에 찾을 수 없었다. 

저작자표시 (새창열림)

'오류해결' 카테고리의 다른 글

api.channel.io API 가져오기 에러 해결 - plugin key  (0) 2024.06.14
TypeError: Cannot destructure property '변수명' of 'req.body' as it is undefined.  (0) 2024.06.02
Node.js에서 .env 변수 안불러와짐  (0) 2024.05.24
mariaDB와 workbench 연동 오류  (0) 2024.05.10
[Fluter] solved - PlatformException 오류 해결  (2) 2023.11.21
    '오류해결' 카테고리의 다른 글
    • api.channel.io API 가져오기 에러 해결 - plugin key
    • TypeError: Cannot destructure property '변수명' of 'req.body' as it is undefined.
    • Node.js에서 .env 변수 안불러와짐
    • mariaDB와 workbench 연동 오류
    🐸minzzi
    🐸minzzi

    티스토리툴바