작은 도서관
article thumbnail
[nestjs] postgresql을 이용한 crud 구현
코딩/백엔드 2023. 8. 23. 15:52

사용 라이브러리 "@nestjs/typeorm": "^10.0.0", "typeorm": "^0.3.17", "bcrypt": "^5.1.1", "class-transformer": "^0.5.1", "class-validator": "^0.13.2", postgresql을 사용하는 이유 postgresql mysql 아키텍처 객체 관계형 단일 관계 지원하는 데이터 타입 숫자 날짜(시간) 문자열 JSON boolean 열거형 XML 기하형 배열 범위 네트워크 주소 숫자 날짜(시간) 문자열 JSON 공간(Spatial) 장점 복잡한 쿼리에 유용함 데이터베이스 크기에 제한이 없음 읽기-쓰기 속도가 빠름 확장에 유리함 광범위한 대중성 읽기 전용 명령을 사용할 수 있음 postgresql을 nestjs에 추가 ..

article thumbnail
[express] 유저 crud와 토큰을 이용한 로그인 구현
코딩/Express 2023. 7. 23. 05:11

셀프 레퍼런스 https://flreauniverse.tistory.com/26 (세션과 토큰) 개요 유저 스키마와 모델 생성하기 유저 crud 구현하기 로그인 api를 연결하고 토큰 발급하기 토큰 검증하기 api 테스트하기 (번외) 비밀번호 암호화 유저 스키마와 모델 생성하기 스키마와 모델 생성은 지난 시간에 해본 적 있습니다. 실력을 더욱 키우고 싶다면 아래 코드를 보지 말고 한번 짜보는것도 좋은 방법입니다. 유저에 필요한 값은 생각보다 간단합니다. 이 두가지 값을 코드로 옮겨보겠습니다. model 폴더 아래에 user.js 파일을 만든 뒤 아래 코드를 작성해주세요. import mongoose from "mongoose"; const userSchema = new mongoose.Schema({ u..

article thumbnail
[개념] 토큰과 세션
코딩/웹 개념 2023. 7. 17. 11:59

개요 HTTP의 비상태성 세션 토큰 HTTP의 비상태성(Stateless) HTTP는 요청-응답 쌍으로 이루어진 통신 규약이라고 알고 있습니다. 그렇다면, 요청-응답이 올바르게 진행된 후 응답은 어떻게 흘러갈까요? 클라이언트는 응답받은 데이터를 갖고 있지만, 서버에선 응답한 내용을 일절 저장하지 않습니다. 클라이언트는 인증(Authentication)을 거쳐야 하는 경우처럼, 서버에서 제공하는 모든 api에 접근할 권한이 없습니다. 클라이언트가 서버에 인증 요청을 보냈고, 적절한 응답("인증되었습니다"와 같은 문구)를 받았다고 해봅시다. 후에 인증이 필요한 api에 접근할 때, 서버에선 응답을 했었는지 모르기 때문에 인증이 되지 않은 클라이언트라고 판단합니다. 그렇다고 인증이 필요한 api를 사용할 때 ..

article thumbnail
[express] Schema와 Model을 생성하고 데이터 저장하기
코딩/Express 2023. 7. 8. 16:00

개요 스키마와 모델 스키마와 모델 구현하기 라우터에서 데이터 받아오기 데이터 CRUD 구현하기 스키마와 모델 DBMS에서 스키마란, 데이터베이스를 구성하는 데이터의 구조와 타입, 데이터간의 관계, 검색 방법, 속성등을 정의한 것을 뜻합니다. 모델이 바로 이런 스키마를 이용해서 만든 객체를 뜻합니다. 서버에선 모델을 통해 데이터베이스에 실제로 작업을 하게 됩니다. 스키마와 모델 구현하기 그럼 실제로 한번 구현해봅시다. 우리는 게시물을 저장하는 라우터를 구현해 두었습니다. 인터넷 게시판의 게시물을 분석해보자면, 어떤 값이 눈에 띄나요? 제목, 생성일자, 내용이 있습니다. 각각 타입으로 생각한다면 제목과 내용은 문자열, 생성일자는 Date타입이 되겠네요. 이를 코드로 한번 옮겨보겠습니다. src 아래에 mod..

article thumbnail
[express] 개요
코딩/Express 2022. 3. 5. 15:49

이 프로젝트에서는 expressjs를 사용해 게시판에서 사용하는 가장 간단한 백엔드 서버를 구현합니다. nodejs의 패키지를 설치하고 관리하는 법을 배웁니다. mongoose를 사용하여 서버와 MongoDB를 연결하고 데이터를 관리하는 법을 배웁니다. 다음 지식이 필요합니다 자바스크립트 문법 프론트엔드와 백엔드의 개념 기초적인 윈도우 명령어 사용법 사용 스택 백엔드: express.js DBMS: MongoDB(mongoose) api 테스트: postman 개요 express 시작하기 express 시작하기 nodejs의 가장 대표적인 패키지 관리자로는 npm이 있습니다. 다만, 이 프로젝트에선 npm대신 yarn을 사용합니다. 제일 먼저, yarn을 설치해줍니다. > npm install yarn ..

article thumbnail
[개념] 백엔드와 프론트엔드의 통신
코딩/웹 개념 2022. 2. 27. 17:38

개요 http란? rest API의 사용 URL 구조(API 디자인) URL PARAMS 매개변수 사용하기 HTTP란? 사용자(프론트엔드)와 백엔드간 일련의 요청과 응답으로 이루어진 인터넷 통신 프로토콜입니다. 단순히 페이지에 접속할때도 이와같은 요청-응답이 이루어지며, 예를들어 www.google.com 이라는 주소에 접속한다면 서버에 구글 페이지를 보여달라고 요청하고, 페이지를 응답받는 통신을 하게되죠. 페이지에 접속할때 가끔 나타나는 '서버가 응답하지 않습니다'같은 오류도 페이지를 보여달라고 요청했으나 여러 문제로 인해 응답이 오지 않는다는 의미입니다. 페이지 뿐 아니라 서버도 http 프로토콜로 통신하고 있습니다. 예를들어 '유저 정보 페이지'를 사용자가 요청하면, 프론트엔드 서버에서는 백엔드 서..

article thumbnail
[nestjs] socket.io 사용과 테스트
코딩/백엔드 2021. 11. 1. 08:43

사용 라이브러리 "@nestjs/websockets": "^8.1.2", "socket.io": "^4.3.1" 소켓 개념의 이해 우리가 통신할때는 http라는 통신 방법을 사용한다. 이 방법은 클라이언트가 서버에 요청을 보내면 서버가 클라이언트에 응답을 보내주는 방식으로, 일련의 요청과 응답이 끝나면 서버는 더 이상 클라이언트에 정보를 보내지 못한다. 이 방식으로 채팅을 구현하기엔 한 가지 문제가 있다. 클라이언트에서 채팅이 왔는지 확인하는 요청을 1초에 한 번씩 보낼 순 없는 노릇이다. 그래서 등장한 통신 방식이 WebSocket이다. 이 방식은 http와 다르게 request와 response로 통신하는것이 아닌, open과 close의 여부로 통신한다. 클라이언트에서 서버에 Socket을 열어달라..

article thumbnail
[koa] mongoose 연결 / CRUD
코딩/백엔드 2021. 10. 7. 17:52

사용 라이브러리 "@koa/router": "^10.1.0", "@types/dotenv": "^8.2.0", "@types/mongoose": "^5.11.97", "koa": "^2.13.1", 개요 mongoose를 koa 프로젝트에서 사용하기 mongoose를 사용하여 User 모델 제작 restfulAPI로 라우터 구축 UserCRUD 제작 1. mongoose를 koa 프로젝트에서 사용하기 import mongoose from 'mongoose'; // 주로 사용하는 mongoose 연결 템플릿. mongoose.connect( process.env.DB_URI!, { user: process.env.DB_USER, pass: process.env.DB_PASSWORD, useNewUrlPar..