node.js 로 api 서버 만들어서 사용하기.
Node.js + Express.js + dotenv를 활용한 간단한 html 서버 만들기
Express 다운받기
npm i express
dotenv 다운받기
dotenv는 Node.js 프로젝트에서 환경 변수를 관리하기 위한 패키지입니다. 일반적으로 프로젝트의 설정 정보나 민감한 정보(예: 데이터베이스 연결 정보, API 키, 비밀번호 등)를 환경 변수로 관리하는 것이 보안적으로 권장됩니다.
npm i dotenv
.env 파일 만들기
node에서
PORT = 3000
server.js 파일 만들기
const express = require('express')
require('dotenv').config();
const app = express()
app.get('', (req, res) => {
res.send('<h1>Hi Im Daniel!</h1>')
})
app.listen(process.env.PORT, () => {
console.log(`Server is running in ${process.env.PORT}`)
})
서버 켜보기
node server.js
HTML 파일 렌더링 하기
index.html 파일 만들기
<html>
<body>
<h1>Hi!</h1>
</body>
</html>
sendFile를 이용해 html 파일 렌더링 해주기
const express = require('express')
require('dotenv').config();
const app = express()
app.get('', (req, res) => {
res.sendFile(__dirname + '/index.html')
})
app.listen(process.env.PORT, () => {
console.log(`Server is running in ${process.env.PORT}`)
})
추가 보충설명
주어진 코드는 Node.js와 Express를 사용하여 간단한 웹 서버를 만드는 예제
const express = require("express"); // Express 모듈을 가져옵니다.
const app = express(); // Express 애플리케이션을 생성합니다.
require('dotenv').config(); // dotenv 모듈을 사용하여 환경 변수를 로드합니다.
// GET 메서드로 루트 경로 ('')에 대한 요청에 응답합니다.
app.get('', (req, res) => {
// 브라우저에 '<h1>안녕하세요</h1>'을 출력하는 대신,
// 현재 디렉토리(__dirname)에 있는 'index.html' 파일을 응답으로 보냅니다.
res.sendFile(__dirname + '/index.html');
});
// 환경 변수에서 설정한 PORT로 서버를 시작합니다.
app.listen(process.env.PORT, () => {
console.log(`서버가 ${process.env.PORT}번에서 작동중입니다.`);
});
여기에 코드의 동작을 간단히 설명하겠습니다:
1. `express` 모듈을 가져와서 애플리케이션을 생성합니다.
2. `.env` 파일을 사용하여 환경 변수를 로드합니다. `.env` 파일에는 서버가 실행될 포트 번호(`PORT`)가 설정되어 있어야 합니다.
3. `app.get()` 메서드를 사용하여 GET 요청에 대한 라우팅을 설정합니다. 이 코드에서는 루트 경로('')로 들어오는 GET 요청에 대한 처리를 정의합니다.
4. 루트 경로에 대한 요청이 들어올 때, 서버는 `res.sendFile(__dirname + '/index.html')`를 통해 현재 디렉토리에 있는 `index.html` 파일을 클라이언트에게 보냅니다.
5. 마지막으로, 환경 변수에서 설정한 `PORT` 번호로 서버를 시작합니다. 서버가 시작되면 콘솔에 해당 포트 번호와 작동 중임을 나타내는 메시지가 출력됩니다.
이 코드는 브라우저에서 `http://localhost:<PORT>` 주소로 접속하면 `index.html` 파일을 볼 수 있는 간단한 웹 서버를 생성합니다. `PORT` 환경 변수는 `.env` 파일에 설정하고 해당 포트로 서버가 실행됩니다.
--------------
추가 - fetch로 api 서버 사용방법. (포트번호로 통신을 보낸다)
`server.js`에서 작성한 Express 서버를 다른 곳에서 `fetch`를 사용하여 통신하려면 해당 서버의 엔드포인트에 요청을 보내면 됩니다. 이를 위해 다른 곳에서 다음과 같이 `fetch` 또는 다른 HTTP 클라이언트를 사용하여 요청을 보낼 수 있습니다.
예를 들어, 클라이언트에서 서버의 루트 엔드포인트에 GET 요청을 보내는 코드를 작성하려면 다음과 같이 할 수 있습니다:
const fetch = require('node-fetch'); // Node.js 환경에서 fetch 사용
const serverUrl = 'http://localhost:포트번호'; // 서버의 주소 (예: http://localhost:3000)
// GET 요청을 보냄
fetch(`${serverUrl}`)
.then((response) => {
if (!response.ok) {
throw new Error(`HTTP error! Status: ${response.status}`);
}
return response.text(); // 서버에서 받은 응답을 텍스트로 읽음
})
.then((data) => {
console.log('서버 응답:', data);
})
.catch((error) => {
console.error('에러:', error);
});
위 코드에서는 클라이언트에서 `fetch`를 사용하여 `serverUrl`에 GET 요청을 보내고, 서버의 응답을 받아서 출력합니다. 포트 번호를 서버가 실행 중인 포트 번호로 변경해야 합니다.
`fetch` 함수 내에서 요청을 커스터마이즈하고, 서버에서 받은 응답을 처리할 수 있습니다. 클라이언트와 서버 간의 통신에 필요한 요청 및 응답 형식에 따라 코드를 수정하실 수 있습니다.