오늘은 router()를 사용해 미리 만들어둔 2개의 파일(channel-demo, user-demo)을 통합해서 깔끔하게 정리를 해 볼 예정이다. 우선, express를 사용하는 가장 큰 이유가 라우팅을 깔끔하게 관리할 수 있다는 것이다.여기서 라우팅이란?Request(요청)이 날아왔을 때, 원하는 경로에 따라 적절한 방향으로 경로를 안내해주는 것이다. 일단 app.js를 만들어 통합을 시켜줄 것이다. app.js에 express 세팅과 포트연결을 해준 뒤, 불필요하게 중복된 코드들을 지워줄 것이다. 어제 포스팅으로 올렸던 코드 중 일부이다!! const express = require('express')const app = express()app.listen(7777)app.use(express.j..
💥 API 설계 (로그인) - 로그인 POST /login req : body (id, pwd)res : `${name}님 환영합니다.` 여기서 잠깐! get으로 하지않는 이유는??? 🙋♀️ 메소드를 GET으로 하게 되면 id,pwd 노출이 되기 때문!! 꼭 POST로 합시다😊 app.post('/login', (req, res) => { console.log(req.body) // userId, pwd // userId가 DB에 저장된 회원인 지 확인해야함 const { userId, password } = req.body // req.body에 전달된 userId, password 꺼내기 var loginUser = {} // 전역변수 + 아무리 텅텅 빈 중괄호여도 값..
💥 forEach()forEach() 메소드는 배열을 순회하는 방법 중 하나이다.배열을 순회하는 이유는, 각 요소를 콜백 함수로 처리하기 위함이라고 생각하면 될 것 같다.콜백 함수를 적용해서 순서대로 한 번씩 실행하기 때문에 배열을 순회한다고 한다. 그럼 for 문 사용하면 되지않나요? for문도 반복문이잖아요? 음.. 흔히 다들 말하길.. forEach()는 향상된 for문이다! 라고...그럼 향상된 걸 쓰겠는가.. 일반적인 걸 쓰겠는가...... 나라면 향상된 거 쓰겠다😃 forEach()는 코드가 간결해지고 가독성이 좋다 라는 장점이 있다. 백문이 불여일코... 일단 해보자!const arr = [1, 2, 3, 4, 5]arr.forEach(function(value, index, array)..
// express 모듈 셋팅const express = require('express')const app = express()app.listen(1234)// 데이터 셋팅let youtuber1 = { name : "Hyun", channelTitle : "Hyun Coding", date : "2024-11-20"}let youtuber2 = { name : "Ju", channelTitle : "Ju Coding", date : "2024-11-21"}let youtuber3 = { name : "Kim", channelTitle : "Kim Coding", date : "2024-11-22"}let db = new Map() // key,value쌍..
💥 express우선, 터미널에 npm install express-generator -g 를 쳐서 express를 설치한다! 음 뭐시기 저시기.. 깔렸다고 하는 것 같긴하다 🙄 그 다음, express를 치면 쫘라라라락 내려가면서 왼쪽 explorer 창에 폴더/파일 들이 생긴다! - bin/www : 서버를 실행할 수 있는 스크립트 파일 : HTTP 모듈에 express 모듈을 연결하고 포트를 지정할 수 있는 파일이다. - public : 외부에서 접근 가능한 파일들을 모아두는 폴더 - views : 템플릿 엔진을 기반으로 하는 템플릿 파일들을 모아두는 폴더 - routes : 서버의 라우터와 관련 로직 파일들을 모아두는 폴더 - app.js : express의 본체 역할! : 핵심 서버 ..
💥 자바스크립트의 마법어제 배웠던 req.params 를 이용해 자바스크립트를 좀 더 배웠다!① 이 코드의 결과는 맨 위의 주석에도 나왔듯이 {"num : "18"} 이었다.1이 숫자가 아닌 문자열로 표시되는 것이다. 그렇다면 이 코드는 어떻게 나올까?② 이 코드의 결과는 {"test" : 1} 이었다...즉, 문자열이 아닌 숫자로 표시된다는 것. 그럼 이렇게 중간에let number = req.params.n - 10if ((number) > 5) { console.log(number) console.log('number의 값이 5보다 큽니다.')라는 코드를 넣었을 때, 어떻게 표시가 될까?①의 코드 결과물은 숫자가 아닌 문자열로 나오니까 연산이 될 수 없다.그럼 에러가 뜰까? 결과를 ..
💥 expressNode.js를 배워보자 (책) 과 20000을 출력해달라는 요청!!!이렇게 되면 화면에... Node.js를 배워보자 (책)20000 이렇게 뜨겠지? ??? : 어림없지! 데이터가 하나씩만 나타나는 걸 볼 수 있다.......그럼 데이터를 다 따로따로 하나씩 요청해야하나?아무리 생각해도 절대 이렇게 쓰진 않을 것 같다 ㅋㅋㅋ..그래서 나온 게 "그럼 데이터를 모아모아 객체 형태로 뿌리는 건 어떰?" 이다!여기서 객체..? 객체가 뭐지 라고 한다면..... 💥 객체주어 자리에 왔을 때 문장이 만들어진다면 그건 다 객체다! by 김송아 요즘 듣고 있는 김송아 강사님의 말씀 ㅋㅋㅋㅋㅋ실제로 객체는 데이터를 하나씩 보내는 것이 아닌 데이터를 모아모아 덩어리로 보내는 것이다! "Node.j..
HTTP method(목적) - 생성(=등록) : POST - 조회 : GET - 수정 : PUT(덮어쓰기) / PATCHcf. PATCH : 일부 변경(=부분 수정) - 삭제 : DELETE - HEAD, OPTIONS, CONNECT, TRACE Node.js 동작 - 싱글 스레드 : 하나의 스레드가 모든 작업을 수행한다. : 스레드가 1개이기 때문에 무너진다면 프로그램 전체에 문제가 발생한다. - 이벤트 기반 - 논블로킹 I/O : I/O가 동작을 하면서 request를 받으면 다음 처리에 요청 보내놓고 다른 작업 처리하다가 먼저 요청한 작업이 끝나면 이벤트를 받아서 응답을 보내는 것 * 논블로킹 실습first() 가 먼저 실행되고 second()를 부르기 위해선 2초를 기다려야 하기 때문에 ..
API(Application Programming Interface) : 응용 프로그램에서 다른 소프트웨어 구성 요소 또는 서비스와 상호 작용을 하기 위한 인터페이스를 제공하는 프로그래밍 기술 REST API : HTTP 규약을 잘 따른 API URL(Uniform Resource Locator) : 웹 페이지가 어디있는지 '위치'를 알려주고, 데이터 연산 해달라고 서버에 요청을 보내는 방법 : 즉, 웹 페이지 주소이다. REST API URL 규칙 - 대문자X 소문자O - 언더바( _ )X 하이픈( - )O - 마지막에 / 포함X - 파일 확장자 포함 X ★ 복수형을 쓴다. ★ 행위 포함X => delete, select, ... 목적을 포함하지않는다. URL + method 연습 => "API ..
HTML과 CSS 만으로 간단한 메인페이지 만들기 HTML과 CSS로 간단하게 메인 페이지를 만들어보았다.display: flex 를 사용하여 이미지들을 예쁘게 가로로 배치하였다. 백엔드 - 웹 서버 : 동적 페이지에 대한 처리는 직접하지 않고, 웹 어플리케이션 서버에게 전달한다.* 정적 페이지 : 화면의 내용 등의 변동이 없는 페이지* 동적 페이지 : 데이터 처리 및 연산을 통해 화면의 내용이 변하는 페이지 - 웹 어플리케이션 서버 : 동적 페이지를 처리한다.데이터베이스와 연결되어 있으며 조회/수정/삭제 등에 대한 처리를 데이터베이스에게 요청한다. - 데이터베이스 : 데이터를 효율적으로 관리하기 위한 데이터의 집합체이다. Node.js자바스크립트를 스크립트 언어 이상으로 프로그래밍 언어 역할을 ..