
에러의 분류서버측 에러상태코드 5XX으로 대표되는, 백엔드 개발자나 서버 어드민이 관심을 가져야하는 오류를 뜻한다.주로 서버 내부 로직의 잘못된 작성, DB 오류, 외부 API 연결 실패 등이 해당 에러를 발생시킨다.사용자측 에러상태코드 4XX으로 대표되는, 사용자측의 잘못된 요청으로 인한 오류를 뜻한다.주로 인증 실패, 유효성 검사 실패, 토큰 변조, 권한 없음, 매개변수 누락 등이 해당 에러를 발생시킨다.에러 메세지 구조 정의위의 두 에러는 전부 백엔드에서 프론트엔드로 반환해야하는 에러이기 때문에 백엔드에선 일관적인 에러 포맷을 반환해야 한다.예시로, 다음과 같은 포맷을 사용할 수 있다.{ statusCode: number, error: string, message: string, code: stri..

사용 라이브러리 "@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에 추가 ..

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

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

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

사용 라이브러리 "@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, ..