-
[Node.js] API 서버 만들기 2 - api 호출(get,post)언어/Node.js 2023. 5. 11. 08:13728x90반응형
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 모듈로 보내는 스크립트기 때문에 필수로 적어줘야 정상적으로 동작한다.
참고
728x90반응형'언어 > Node.js' 카테고리의 다른 글
[Node.js] API 서버 만들기 1 - 서버 환경 구축 (0) 2023.05.09