express가 필요한 이유는 listen을 사용해서 server, client 연결을 위해서이다. (io)
server를 공무원으로 보고, 사용해야하는 mysql, body-parser 등을 require
const express = require("express");
const bodyParser = require("body-parser");
const cookieParser = require("cookie-parser");
const mysql = require("mysql");
const cors = require("cors");
const path = require("path");
const server = express(); // make server
const DIST_DIR = path.join(__dirname, "../Client/dist");
server가 mysql을 사용해야하므로 mysql을 먼저 세팅해주자
const mysqlHandler = mysql.createConnection({
host: "localhost", // sql 위치
user: "root", // 로그인 아이디, 비번
password: "370123",
database: "sys", // 데이터베이스 이름
});
mysqlHandler.connect();
서버공무원이 무얼 할수 있는지 세팅을한다
server.use(bodyParser.urlencoded({ extended: true }));
server.use(bodyParser.json()); // 무슨 언어로 client와 이야기하는지 세팅 (obj<->json)
server.use(cookieParser());
server.use(cors());
server.use(express.static(DIST_DIR));
// client가 웹에 접근시 index.html를 보낸다
server.get("/", function (req, res) {
res.sendFile(path.join(DIST_DIR, "index.html"));
});
server.post("/api/email", (req, res) => {
console.log(req.body);
const sql = `SELECT firstName FROM sys.login WHERE email = '${req.body.email}';`; // bodyparser
console.log(sql);
mysqlHandler.query(sql, (err, rows, fields) => {
if (err) throw err;
res.send({ firstname: rows[0].firstName }); // bodyparser obj => json
});
});
// 공무원에게 5000포트 창고를 listen 하라고 시킨다
server.listen(5000, (err) => {
if (err) throw err;
console.log("listening 5000");
});
Application Programming Interface
모듈화하여 만들어진, 어떤 기능을 제어/제공하는 인터페이스
API는 프로그램의 기능을 다른 프로그램이 쓸 수 있게 하는 것이 목적
현재 개발은 독점하는 것보다, 서로 공유하며 더 많은 이익을 얻을수 있기 때문
Software Development Kit
API, 문서등을 포함하는 프로그래머들을 위해 제공하는 소프트웨서 개발 도구 모음.
예를 들면, facebook sdk.
npm install react를 다운로드 하면 react.createElement 같은것들을 사용할 수 있다.
iOS SDK를 다운로드하면 개발자에게 iOS 애플리케이션을 만드는 데 필요한 모든 도구가 제공된다.
SDK는 키트를 얻는 것과 같다. IKEA 가구처럼 부품과 사용설명서까지 포함된 키트를 의미한다.
API는 어떤 가구를 만들기 위한 부품하나하나를 의미한다. 각 부품은 다른 브랜드의 것일 수 있고, 만들 수 있는 가구는 무한하다.
API는 SDK의 일부가 될 수 있다는 점에서 SDK가 API보다 더 큰 개념이라고 할 수 있다.
~~Library > SDK > API
라이브러리는 sdk대로 커스터마이징 한 걸 ~~