ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Node.js] API 서버 만들기 2 - api 호출(get,post)
    언어/Node.js 2023. 5. 11. 08:13
    728x90
    반응형

    1. express 구조 파악

    앞의 https://mongs-drawing.tistory.com/19 포스팅에서 설치한 express-generator를 이용하여 node.js 프레임워크를 만들었다면 아래와 같은 구조의 node.js 환경이 구축이 되어 있을 것이다.

    상세히 설명하자면 아래와 같다.

     

    ▶ bin/www
    http 모듈에 express 모듈을 연결하며, 포트를 지정할 수 있다.(기본 포트는 3000으로 되어있다.)
    서버를 실행하는 스크립트이다.

     

     public
    각종 리소스들을 모아놓은 폴더로 외부(브라우저 등의 클라이언트)에서 접근 가능한 파일들을 모아 둔 디렉토리이다.
    images, javascripts, stylesheets 파일들이 들어있다.

     

     routes
    라우터들을 관리하는 곳으로 서버의 로직은 모두 routes 폴더 안의 파일에 작성할 것이다. (MVC 패턴에서 Controller의 역할이라 생각하면 된다.) index.js를 기반으로 라우팅 관리를 해주면 된다.

     

     views
    view 파일들을 관리하는 곳으로 웹서버로 사용 시 이 디렉토리에 잇는 파일들을 사용해서 렌더링 시킨다.

     

     app.js
    핵심적인 서버의 역할을 하며 미들웨어 관리를 하는 곳이다.

    클라이언트가 서버 접속 시 처음으로 실행되는 곳이며 파라미터에 따라 정해진 routes로 이동시킨다.

     

    2. API 호출

    express로 자동 생성된 app.js 에서 접속 파라미터별 경로 설정을 추가할 수 있다.

    기본으로 작성된 소스를 예로 들면, 아래와 같다.

    // 서버ip:3000
    app.use('/', indexRouter);
    
    // 서버ip:3000/users
    app.use('/users', usersRouter);

    첫 번째에 작성된 app.use('/', indexRouter); 의 경우 서버 아이피가 123.123.123 일 때

    클라이언트가 123.123.123:3000 접속 시 라우팅 하는 설정 부분이다.

     

    두 번째에 작성된 app.user('/users', usersRouter); 의 경우 위와 같은 아이피를 가진 서버일 때

    클라이언트가 123.123.123:3000/users로 접속 시 라우팅 하는 설정 부분이다.

     

    이에 앞서 indexRouter와 usersRouter의 변수 설정을 아래와 같이 먼저 해주어야 한다.(기본으로 생성되어 있다.)

    var indexRouter = require('./routes/index');
    var usersRouter = require('./routes/users');

    indexRouter의 경우 1. express 구조에서 살펴본 routes 폴더의 index.js 파일을 참조하고 있고,
    usersRouter의 경우 users.js 파일을 참조하고 있는 것을 확인할 수 있다.

     

    3. 응답 데이터 작성

    routes/users.js 파일을 살펴보면 아래와 같다.

    var express = require('express');
    var router = express.Router();
    
    /* GET users listing. */
    router.get('/', function(req, res, next) {
      res.send('respond with a resource');
    });
    
    module.exports = router;

    router.get 함수는 get으로 요청이 들어왔을 때 실행되는 함수로 내부에 비즈니스 로직을 추가할 수 있다.

    res.send 는 응답을 해주는 합수로 print, echo와 같은 역할을 한다.

    간단하게 현재시간을 보여주는 예제는 아래와 같이 만들 수 있다.

    const now = new Date();
    res.send(now);

     

    post 메쏘드로 api 요청이 들어왔을 경우는 현재시간을 보여주는 예제는 간단하게 아래와 같이 작성할 수 있다.

    router.post('/', function(req, res, next) {
    	const now = new Date();
    	router.send(now);
    });

    마지막 module.exports = router; 문구는 위에서 설정한 get과 post 파라미터에 대한 응답을 export 모듈로 보내는 스크립트기 때문에 필수로 적어줘야 정상적으로 동작한다.

     


    참고

    https://velog.io/@new_wisdom/Node.js-6-Express-Express-generator%EB%A1%9C-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EB%A7%8C%EB%93%A4%EA%B8%B0

    728x90
    반응형

    '언어 > Node.js' 카테고리의 다른 글

    [Node.js] API 서버 만들기 1 - 서버 환경 구축  (0) 2023.05.09

    댓글

Designed by Tistory.