[NestJS] JWT(JSON Web Token) - 로그인 API 구현과 암호화
·
Server/NodeJS(NestJS)
JWT(JSON Web Token)는 클라이언트와 서버 간에 정보를 안전하게 전달하기 위해 사용되는 토큰이다크게 헤더(header), 페이로드(payload), 서명(signature) 세 부분으로 구성되는데, 이 세 부분이 결합되어 하나의 토큰을 형성한다 JWT 토큰을 구현하기 위해서는 Access Token과 Refresh Token 이렇게 두 종류의 토큰이 사용된다이 두 가지 토큰은 각기 다른 목적과 특성을 가지고 있으며, 보안성과 사용자 경험을 동시에 고려한 토큰 관리 방법이다. Access Token[목적] Access Token은 사용자 인증을 위해 사용된다이 토큰은 클라이언트가 서버에 API 요청을 보낼 때 포함되며, 서버는 이 토큰을 사용해 요청이 인증된 사용자인지 확인한다 [life cy..
[NestJs] @InjectRepository 데코레이터 with TypeORM
·
Server/NodeJS(NestJS)
NestJS에서 @InjectRepository 데코레이터는 TypeORM과 함께 사용되어 특정 엔티티의 리포지토리를 서비스 클래스에 주입하기 위해 사용됩니다! 이 데코레이터는 의존성 주입을 통해 데이터베이스와의 상호작용을 보다 간편하게 관리할 수 있도록 도와줘요  이 예제에서는 MySQL 데이터베이스를 사용하여 사용자(User) 데이터를 저장하고, GraphQL을 통해 사용자 데이터를 조회하고 추가하는 API를 구축합니다.@InjectRepository 데코레이터 사용 방법// npm 설치npm install @nestjs/typeorm typeorm mysql2npm install @nestjs/graphql @nestjs/apollo graphql apollo-server-express// yarn..
[Docker]
·
Server/Docker
공부한 개념 정리하기 ※ 틀릴수도있음 도커란?도커(Docker)란 쉽게 말해 가상머신이다.가상머신은 컴퓨터 안에 또 다른 컴퓨터를 만 수 있도록 해주는 소프트웨어이다.가상머신은 무겁기 때문에 컴퓨터 안에 가상머신을 설치하면 컴퓨터가 느려지거나 버벅이는 문제가 발생할 수 있다. 이를 해결하기 위해 가벼운 가상머신을 만들었는데 그게 도커이다. 도커에는 컨테이너와 이미지라는 개념이 있는데, 이 개념에 대해 아는것이 중요하다. 가상머신 VS 컨테이너도커가 가상머신이라고 했는데 가상머신과는 조금 다르다. 가상머신도 컴퓨터고, 컨테이너도 컴퓨터다.컴퓨터를 사용하기 위해서는 운영체제를 설치해 사용해야한다. 여기서 host OS 와 guest OS 개념을 알아야하는데 지금 사용하는 내 컴퓨터에 깔려있는 기존 OS가 H..
[MYSQL] 오류코드 1452
·
Server/Database
table이 fk로 엮여있고 순서가 기억나지 않는다면 SET foreign_key_checks = 0; 를 사용해서 fk를 잠깐 무력화 시킨다음 INSERT를 하면 테이블 변경에 성공한다 변경 후에는 SET foreign_key_checks = 1; 을 해주면 됨
[Node.js] 블로킹 / 논블로킹
·
Server/NodeJS(NestJS)
이벤트 루프를 잘 활용하면 오래 걸리는 작업을 효율적으로 처리할 수 있다 작업에는 동시에 실행될 수 있는 작업과 동시에 실행될수 없는 작업이 있는데 기본적으로 자바스크립트 코드는 동시에 실행될 수 없다 하지만 파일 시스템 접근이나 네트워크를 통한 입출력 작업은 동시에 처리될 수 있다 블로킹이란 이전 작업이 끝나야만 다음 작업을 수행하는 것을 의미하고 논블로킹은 이전 작업이 완료될 때 까지 기다리지 않고 다음 작업을 수행함을 뜻한다 논브로킹 방식이 더 짧은 시간안에 같은 작업을 처리할 수 있다(모든 작업이 동시에 처리될 수 있는 작업이라는 전제) setTime(콜백, 0)은 코드를 논블로킹으로 만들기 위해 사용하는 기법 중 하나이다 아무리 논블로킹 방식으로 코드를 작성하더라도 코드가 전부 내가 작성한 것이..
[Node.js] 이벤트 루프 (event loop)
·
Server/NodeJS(NestJS)
function run() { console.log("3초후 실행"); } console.log("시작"); setTimeout(run, 3000); console.log("끝"); 시작 끝 3초 후 실행 동작 과정 setTime의 시간이 정확하지 않을 수 있는데 이벤트 루프는 스택이 비어있을 때 만 큐에 있는 run함수를 스택에 가져오는데 스택에 함수가 너무 많다면 3초가 지난 후에도 run 함수가 실행되지 않기 때문이다
[GraphQl] GraphQl - Codegen 설치하기
·
Server/Database
1. GraphQl Code Generator 사이트에 접속해준다. https://the-guild.dev/graphql/codegen Home – GraphQL Code Generator GraphQL Code Generator Documentation the-guild.dev 2. installation 페이지에 들어간다 https://the-guild.dev/graphql/codegen/docs/getting-started/installation Installation – GraphQL Code Generator GraphQL Code Generator is a tool for generating code from GraphQL schema and operations. It can generate ..
[GraphQL] Query 와 Mutation
·
Server/Database
query와 mutation을 사용하기 위해서는 _app.js에 설정해줘야 하는 게 있다. _app.js import { ApolloProvider, InMemoryCache, ApolloClient } from "@apollo/client"; export default function App({ Component, pageProps }) { const client = new ApolloClient({ uri: "http://practice.codebootcamp.co.kr/graphql", cache: new InMemoryCache(), }); return ( ); } http://practice.codebootcamp.co.kr/graphql 위 사이트에서 Back-end 개발자가 만들어놓은 API..
[GraphQL] GraphQL이란?
·
Server/Database
HTTP 통신 HTTP란 두 컴퓨터간에 텍스트 데이터를 주고 받는 길이 길을 통해 요청(request)과 응답(response)을 주고받음Back-end 컴퓨터와 주고받는다 API API란 HTTP요청을 Back-end 컴퓨터에 보냈을 때 실행되는 Back-end 기능이다여러개의 HTTP 길이 존재하고 각각의 요청마다 담당자가 필요한데이 담당자가 API Back-end 개발자가 만든 함수 이 API 종류에는 Rest-API와 GraphQL-API가 있다. GraphQL Rest-API는 응답 결과로 모든 데이터를 받아야만 하지만 GraphQL-API는 필요한 데이터만 골라 받을 수 있다. 이러한 이유로 각 API에 전송을 요청하는 담당자도 다르다 Rest-API는 axios GraphQL은 apollo-..