[node.js] express 기본기 1. get

iberis2·2024년 2월 10일
post-thumbnail

Server 의 종류

web server : 웹 페이지(화면을 그리는데 필요한 재료)를 response 의 body 에 담아서 보내주는 서버
api server : 요청을 처리하고 처리한 결과를 response body 에 JSON 등의 형식으로 담아 보내주는 서버

express

Node.js 환경 위에서 실행될 서버 프로그램을 만들 때 사용할 수 있는 웹 프레임워크이다.
다른 프레임워크에 비해, 프로그램 전체 구조에 관해서 미리 정해진 패턴이 없는 편이라서 좀더 자유롭게 패턴을 구현할 수 있다.

express 기본 사용법

const express = require('express'); // express 패키지를 가져온다.
const app = express(); // express 패키지가 리턴하는 객체를 사용한다. 관습적으로 `app` 이라는 이름이 붙는다.

app.get('/', (req, res) => {
  res.send('<h1> Home </h1>'); // `/` 경로에 접근하면 <h1>home</h1> 으로 응답
});

app.listen(3000, () => {
  console.log('Server is running on port 3000'); // 3000 번 포트에 잘 연결되면 실행
});
                        

request params

Express에서는 URL의 path 부분 중 변하는 값이 들어가는 부분은 콜론(:)을 앞에 붙여서 표현하고 이를 Route Parameter라고 한다.

/members 를 접속하면 모든 members 의 정보(resource)가 조회되고,
members/:id 로 접속하면 특정 member 의 정보가 조회되도록 하는 예시

// members.js

module.exports = [ 
  { id: 1, name: 'John Doe', /* .. 생략 */ },
  { id: 2, name: 'Jane Lee', /* .. 생략  */ }, 
  /* .. 생략 */
]
// main.js

const express = require('express');
const app = express();

const members = require('./members'); // members 정보가 담긴 배열을 불러와 사용

app.get('/api/members', (req, res) => {
  res.send(members); // string 타입 외에도 배열, 객체 등의 타입을 보낼 수 있다. json 형식으로 변환되어 response body 에 담겨 보내지게 된다.
});

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

members 조회
members 전체 조회

app.get('/api/members/:id', (req, res) => {
  const { id } = req.params; // request.params 객체에서 `:` 이후 파라미터를 가져올 수 있다.
  const member = members.find(member => member.id === parseInt(id));
  if (member) {
    res.send(member);
  } else {
    res.status(404).send({ // header 에 status 를 404 로, body 에 send 에 담긴 내용을 보낼 수 있다.
      message: `Member with id ${id} not found`,
    });
  }
});

member 1 조회
member 1 조회
없는 member 조회
없는 member 조회
없는 member 조회 header
없는 member 조회 header
없는 member 조회 body
없는 member 조회 body

request query

특정 query에 해당하는 members 의 정보가 조회되도록 하는 예시
/members?[query]=[조건] query 의 조건과 일치하는 members 의 정보만 요청했을 때 응답해줄 수 있다.

  • ex) /members?team=sales team 이 sales 인 members 만 조회
// main.js
const express = require('express');
const app = express();

const members = require('./members'); 

app.get('/api/members', (req, res) => {
  const { team } = req.query // 요청 query 에 team 이 있는 경우
  if(team){ // members 의 team 정보와 일치하는 members 의 정보만 보내준다
    const teamMembers = members.filter(member => member.team === team);
  } else {    
    res.send(members); 
  }
});

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});


크롬에서 JSON 을 예쁘게 보여주는 익스텐션 : 🔗 JSON Viwer

profile
자동화와 기록으로 더 효율적으로 일하는 으른 개발자가 되려고 합니다.

0개의 댓글