10. 클라이언트에서 서버에 요청하기 ( 클라이언트와 서버의 연결 ) Database 와 서버를 연결하고, Postman 을 통하여 확인했다. 1. 이제 실제로 클라이언트에서 요청하고 확인하도록 하자. 2. 리액트로 클라이언트를 생성해두었다. 클라이언트 측에서 fetch 로 요청을 해보았다. 정상적으로 GET 요청이 되는 것을 확인했다. 2023. 2. 18. 9. DB 연결 ( mongoDB ), 환경변수의 사용 Feat. POSTMAN,dotenv 이제 실제로 DB 를 연결해보도록하자. 우선 DB 에 연결하기 전에, DB에 연결하는 API Key 를 숨기기 위하여, .env 에 설정하여 코드를 숨기도록 하자. 1. env 설정 2. database 를 연결할 함수, 실제로 데이터교환을 할 함수를 생성한다. dotenv 를 통해, 환경변수를 사용하여 URL 을 가져오고, 해당 URL 로 연결한다. const { MongoClient } = require("mongodb"); require("dotenv").config();// dotenv 를 사용할 수 있도록 require 한다. const url = process.env.MONGODB_URL;// 환경변수에서 온 URL let database; co.. 2023. 2. 18. 8. bodyparser 의 파싱과, 컨트롤러에서 GET 과 POST 에 대한 응답로직 결과적으로 node.js 로 들어오는 요청과 응답이 어떻게 이루어지는지 확인해보자. 1. index.js 1) 들어오는 요청이, 다른 오리진이라도 상호작용 할 수 있게, cors 를 미들웨어로 추가한다. 2) 들어오는 요청에 대해 bodyparser 미들웨어를 통해 자바스크립트코드로 변환한다. 3) 들어오는 요청에 알맞는 경로의 라우터의 미들웨어로 연결시켜준다. 4) 잘못된 요청에 대해 경로 오류와, 에러에 대해 처리하는 미들웨어에 의해 처리된다. const express = require("express"); const cors = require("cors"); const bodyParser = require("body-parser"); const diaryRouter = req.. 2023. 2. 18. 7. module.exports 와 exports 하나의 메인 함수를 exports 할때, module.exports 를 사용했다. ex) module.exports = router; 파일 안에 여러개의 함수를 exports 하고 싶을때 하나씩 exports 를 써서 export 했다. ex) exports.diaryValidation = diaryValidation exports.postUserDiary = postUserDiary exports.getUserDiary = getUserDiary ... 1. "사실, 여러개의 각각 export 도 module.exports 를 사용 할 수 있고 이게 훨씬 깔끔하다." module.exports = { diaryValidation:diaryValidation, postUserDiary:postUserDi.. 2023. 2. 18. 6. Validation 아웃소싱 기본적으로 Validation 은 서버의 전유물이다. 유저로부터 로직을 숨길수도, 함부로 유저가 코드를 만질 수 도 없으며, 최종적으로 요청을 받고 응답을 보내는 곳도 바로 서버이기 때문이다. Validation 로직을 처리하기 위해서는 라이브러리와 미들웨어를 사용하거나 자체 로직을 컨트롤러의 로직에 넣어서 사용하는 경우가 있다. 나는 후자를 선호한다. 따라서, Valiadation 로직을 작성해 아웃소싱하고, 컨트롤러의 로직에 넣어 사용해보도록 하자. 1. helper 폴더를 만들어, validation 코드를 만든다. const diaryValidation = (userInput) => { if ( !userInput.userEmail.inc.. 2023. 2. 18. 5. MVC 패턴, Contoroller 의 사용 // 여러개의 미들웨어 Routes 폴더에는, 우리가 만들어주는 연결고리인 route 만 있는 것이 좋다. 이게 무슨 뜻이나면, 로직은 컨트롤러에 따로 빼서, 사용하는 것이 적절하다는 말이다. 이는 MVC 패턴의 Contoller 에 해당하고, 이는 로직을 담당하는 역할을 한다. contoller 폴더에 로직을 따로정리해보자. 1. 기존의 Routes 폴더 안의 Route ... router.get("/:userEmail", (req, res, next) => { const userEmail = req.params.userEmail; if (!userEmail.includes("@")) { const error = new Error("이메일이 올바르지 않습니다.") error.code =.. 2023. 2. 18. 4. 잘못된 요청 처리하기, 잘못된 경로로 온 요청 처리하기 1. 잘못된 요청 에 대해, 404 코드 보내기 만약 클라이언트로부터 잘못된 요청이 온다면, 어떻게 처리해야 할까? 적절한 에러코드를 보냄으로써, 요청에 대한 응답을 처리하자. const express = require("express"); const router = express.Router(); router.get("/:userEmail", (req, res, next) => { const userEmail = req.params.userEmail; if (!userEmail.includes("@")) { res.status(404).json({ message: "not found" }); // return이나, if,else 등을 사용하여 return; // .. 2023. 2. 18. 3. 라우터를 사용하여, 미들웨어를 설정하기 라우터는 express 의 핵심 기능중 하나이다. 라우터를 사용하여 클라이언트에서 요청하는 특정 URL 을 바탕으로, "필요한 미들웨어를 아웃소싱하고 하나로 뭉쳐" 기능적으로 유사한 미들웨어들을 하나로 모아 관리할 수 있게 해준다. 0. 라우터의 기본 사용 const express = require("express") const route = express.Router()// Router() 를 사용하여, route 를 만들어서 route.get("/", (req,res,next)=>{// app 과 같은 기능을 하는 route 를 사용한다. console.log("diary") res.json({message : "this is diary"}) }).. 2023. 2. 18. 2. 기본 서버 환경 구성하기 시작하기에 앞서 필요한 여러가지 라이브러리를 설치해본다. 1. nodemon 설치 ( npm i nodemon ) 서버를 시작하고, 코드를 변경했을때 새로고쳐진 코드를 즉각적으로 반영해주는 라이브러리이다. nodemon 을 사용하지 않으면, 코드를 변경하고 계속해서 서버를 껐다 켜야하는 비효율적인 행보를 보여야한다. nodemon 을 설치하고 에 들어가 스크립트에 "start" : "nodemon index.js" 를 적음으로써 nodemon 을 실행시킬 수 있도록 만들자. "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start" : "nodemon index.js" }, 이렇게 설정해두면 터미널창에 npm start 를 통해.. 2023. 2. 18. 1.Node.js 의 기본 Node.js 는 V8 자바스크립트 엔진을 가지고 있는 자바스크립트 런타임(환경) 이다. Node.js 는 자바스크립트를 서버에서도 사용할 수 있도록 만든 프로그램으로, 기본적으로 서버측에서 실행된다. 내장 HTTP 서버 라이브러리를 가지고 있어, 별도의 소프트웨어 없이 웹서버에서 실행이 가능하다. 자바스크립트 언어를 사용하므로, 자바스크립트 하나로 프론트와 백을 동시에 처리 가능한 장점을 가지고 있다. 빈번한 I/O 처리에 있어 우수한 성능을 가지고 있다. 그래서 노드로 무얼 하나? 서버를 만들고 운영할 수 있다! 이제 시작해보자! 2023. 2. 18. 이전 1 다음