이번엔 "Express"를 이용하여 웹서버를 만들어 본다.

npm install express --save

 

상기 명령어를 이용해서 express 를 설치해 준다.

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

const server = app.listen(3000, () => {
    console.log('Start Server : localhost:3000');
});

require메서드를 이용해서 express모듈을 사용 할 수 있도록 처리 해준다.

const server에 정의 한 내용은 3000번 포트를 이용해 접근 하여 에러가 없을 경우 console.log에 명시된 내용이 찍히도록 한다.

 

(터미널에서 입력해준다)서버 시작 명령어

node server.js

서버의 정상 작동

현재는 서버의 작동만을 정의 했기 때문에 위와 같은 에러 페이지를 띄워준다.

서버가 없는 경우

실제 서버가 없거나 동작하지 않는 경우는 위와 같은 화면이 표시된다.

 

서버에서의 기능을 구현 하기 전에 간단한 개념 정리를 한다.

 

웹브라우저를 사용하는 것은 클라이언트 라고 생각하고, 
클라이언트는 웹사이트를 들어가서 이런 저런 버튼을 눌러보면서 여러 기능을 서버에 요청하게 된다.
이게 개발에서 자주 보는 request, response이다.

예를 들어 사용자는 웹사이트에 표시된 '게시판' 이라는 탭을 클릭을 하게 되면,

게시판을 보여달라는 '요청'(request)를 서버에 전달하게 되고 , 

서버는 이러한 요청에 맞는 기능을 동작시키고 결과물을 웹사이트에 다시 '반환'하게 된다.(response)

요청을 서버의 어떤 기능과 맵핑 하는 것을 '라우팅'이라고 한다.

 

// respond with "hello world" when a GET request is made to the homepage
app.get('/', function(req, res) {
  res.send('hello world');
});

express공식 홈페이지에 들어가면 사용법 맨 위에 나오는 예제 코드이다.

이 코드를 server.js에 넣고 서버를 실행해주면

 

send메서드 안에 입력된 문자열을 반환한다.

res는 response를 의미하고, send는 html에 입력된 내용을 뿌려주는 역할이라고 짐작 할 수 있다.

 

restful api만을 만드는 것이 목적이라면 

app.get, app.post, app.delete, app.put으로 라우팅 처리를 해주면 되고,

내가 본 강의 영상에서는 html파일을 띄워주는 방법을 소개 하고 있었기 때문에 그 방법도 기재한다.

 

html파일을 연결할 때에 'ejs'라는 모듈을 설치 하였다.

ejs는 html태그에서 자바스크립트를 사용할 수 있도록 해주는 도구이다.

npm install ejs --save

 

 

ejs모듈을 설치 해준다.

 

server.js 파일에 아래의 코드를 입력해준다.

//현재 디렉토리 = __dirname
app.set('views', __dirname + '/views')
app.set('view engine', 'ejs')
app.engine('html',require('ejs').renderFile);
app.get('/', function(req,res){
    res.render('index.html')
})

app.get은 res.render()메서드를 호출하는 것으로 바꿔준다.

 

폴더 구조 참고용

이후 서버를 실행하면 index.html파일에 입력된 내용을 띄워준다.

 

유튜버 "개발자의 품격"님의 영상을 참고하여 진행하였습니다.

https://youtu.be/toLDNN4FQv0

 

'개발 > node' 카테고리의 다른 글

Node.js 기초 프로젝트_01  (0) 2023.06.24
// 비동기 방식
const send = async (option) => {
	nodemailer.createTransport(eamil),sendMail(option, (error, info) => {
    	if(error) {
        	console.log(error);
        }else{
        	console.log(info);
            return info.response;
        }
    });
};

nodemailer라고 하는 모듈을 사용하여 메일을 발송하는 프로그래밍을 만들어본다.

 

 

1. 설치

npm install nodemailer

해당 명령어를 터미널에서 입력하면 

이와 같이 "node_modules"라는 폴더가 생기고, "package-lock"에서는 설치된 모듈에 대한 의존성 정의가 되어있다.

 

2. 사용

설치된 모듈을 사용할 때에는 내가 해당 모듈을 사용하겠다는 선언을 해준다.

const nodemailer = require('nodemailer');

자바는 import, c#은 using, node는 require를 이용하여 사용할 모듈을 가져온다.

 

nodemailer의 사용법은 

https://nodemailer.com/usage/

 

Usage :: Nodemailer

Usage Setting it up Install Nodemailer from npm To send emails you need a transporter object let transporter = nodemailer.createTransport(transport[, defaults]) Where transporter is going to be an object that is able to send mail transport is the transport

nodemailer.com

 

nodemailer의 공식 홈페이지에서 잘 설명이 되어있다.

 

이메일을 보내려면 transport객체가 필요로 하다.

// 이메일을 보내려면 transporter 객체가 필요합니다.
let transporter = nodemailer.createTransport(transport[, defaults])

// transporter는 메일을 보낼 수 있는 객체가 될 것입니다.
// transport 는 전송 구성 개체, 연결 URL 또는 전송 플러그인 인스턴스입니다.
// defaults 는 메일 옵션의 기본값을 정의하는 객체입니다.

// 2,3번째는 메일을 전송하기 위해서는 SMTP서버에서 메일을 보낼 수 있는 관리자의 정보가 필요로 하다

// transporter 객체가 있으면 메일을 보낼 수 있습니다.
transporter.sendMail(data[, callback])

메일을 보내기 위해서는 SMTP서버가 필요로 한데.

"mailtrap"을 이용 할 수 있다.

mailtrap이란?

챗gpt를 이용하여 질문하면 알려줍니다.

 

https://mailtrap.io/

 

Mailtrap: Email Delivery Platform

Email Delivery Platform for individuals and businesses to test, send and control email infrastructure in one place. Start today - Sign Up free!

mailtrap.io

해당 사이트에서  가입을 하면 왼쪽 메뉴바에서  Email Testing탭을 들어가면 

Inboxes > My Inbox가 나옵니다.

 

SMTP Settings탭에서 "Integrations"를 보면 

셀렉트 박스가 나오는데

Node.js를 사용하기 때문에 Nodemailer로 선택을 해주면

위의 json을 그대로 사용하면 된다.

// 비동기 방식으로 선언

//SMTP 관리자 정보
const email = {
	host: "sandbox.smtp.mailtrap.io",
  	port: 2525,
  	auth: {
    user: "1sodfkjasidjf932kj",
    pass: "23ijngfouj1ihdknifkn"
}

const send = async (option) => {
    nodemailer.createTransport(email).sendMail(option, (error, info)=>{
        if(error){
            console.log(error);
        }else{
            console.log(info);
            return info.reseponse;
        } 
    });
};


let email_data = {
    from : 'abcde@gmail.com',
    to : "edcba@naver.com",
    subject : '테스트 메일 입니다.',
    text: 'nodejs 테스트'
}

send(email_data);

 

이제 터미널에서 js 파일을 실행시켜준다.

node test.js

정상적으로 작동하면 mailtrap에서 테스트 메일이 도착하는 것을 확인 할 수 있다.

 

 

유튜버 "개발자의 품격"님의 영상을 참고하여 진행하였습니다.

https://youtu.be/toLDNN4FQv0

'개발 > node' 카테고리의 다른 글

Node.js 기초 프로젝트_02  (0) 2023.06.24

+ Recent posts