전체 글 77

Java - 쿠키(Cookie)

쿠키 추가 요청값(이름, 값, 만료 기간)을 바탕으로 HTTP 응답에 쿠키 추가 public static void addCookie(HttpServletResponse response, String name, String value, int maxAge) { Cookie cookie = new Cookie(name, value); cookie.setPath("/"); cookie.setMaxAge(maxAge); response.addCookie(cookie); } 쿠키 삭제 쿠키 이름을 입력받아 쿠키 삭제 실제로 삭제하는 것은 아니고, 파라미터로 넘어온 키의 쿠키를 빈 값으로 바꾼 뒤 만료 시간을 0으로 설정하여 쿠키가 재성성 되자마자 만료 처리하게 함 public static void deleteCo..

OAuth란?

OAuth란? 제 3의 서비스에 계정 관리를 맡기는 방식 네이버로 로그인하기, 구글로 로그인하기, 페이스북으로 로그인하기... 용어 리소스 오너(resource owner): 자신의 정보를 사용하도록 인증 서버에 허가하는 주체로, 서비스를 이용하는 사용자가 해당 리소스 서버(resource server): 리소스 오너의 정보를 가지며 보호하는 주체를 의미. 네이버, 구글, 페이스북이 리소스 서버에 해당 인증 서버(authorization server): 클라이언트에게 리소스 오너의 정보에 접근할 수 있는 토큰을 발급하는 역할 클라이언트 애플리케이션(client application): 인증 서버에게 인증을 받고 리소스 오너의 리소스를 사용하는 주체로, 지금 만들고 있는 서비스가 해당 권한 부여 코드 승인..

ETC

TypeScript - any 타입을 지양하는 이유

1. 타입 안정성이 없다. let age: number; age = '10'; // "12" 형식은 number 형식에 할당될 수 없습니다. age = '10' as any // OK age는 number 타입으로 선언되어 있기에 타입 체커를 통해 위의 코드에서는 오류를 찾아냈지만, 타입 단언문인 as any를 사용하게 되면 오류가 없어진다. 2. 함수 시그니처를 무시한다. function calc(date: Date): number { // 내용.. } let date: any = '1994-01-28'; calc(date); // OK calc()의 date 매개변수는 Date 타입이어야 한다. 그러나 any 타입을 사용하게 되면 calc()의 시그니처를 무시하게 된다. 3. 언어 서비스가 적용되지 ..

NestJS - class-validator 데코레이터

class-validator는 데코레이터를 사용하여 간편하게 유효성 검증을 할 수 있는 라이브러리이다. class-validator의 데코레이터 종류를 알아보자! 데코레이터 설명 @IsEmpty() 값이 null, undefined, "" 인지 확인 @IsNotEmpty() 값이 null, undefined, "" 이 아닌지 확인 @IsIn(values: any[]) 값이 values 배열에 있는 값인지 확인 @IsNotIn(values: any[]) 값이 values 배열에 없는 값인지 확인 @IsBoolean() 값이 boolean 인지 확인 @IsDate() 값이 Date 인지 확인 @IsString() 값이 문자열인지 확인 @IsNumber(options: IsNumberOptions) 값이 nu..

NestJS - 네이밍 규칙

NestJS는 일반적으로 아래와 같은 규칙을 따른다. 1. 파일명은 .으로 연결하고, 둘 이상의 단어로 구성되어 있을 시 -로 연결 hello.controller.ts my-first.controller.ts 2. 클래스명은 카멜 케이스 사용 HelloController MyFirstController 3. 같은 디렉터리에 있는 클래스의 경우 index.ts 사용 // index.ts 미사용 import { HelloController } from './contrllers/hello.controller' import { MyFirstController } from './contrllers/my-first.controller' // index.ts 사용 import { HelloController, MyF..

VSCode - rest client

curl 명령어나 postman 같은 프로그램을 사용하여도 되지만 VSCode에서 rest client 확장프로그램을 설치하여 api 호출을 해보자 설치 mongoose를 이용한 crud 코드 const express = require("express"); const bodyParser = require("body-parser"); const mongoose = require("mongoose"); const Person = require("./person-model"); mongoose.set("strictQuery", false); const app = express(); app.use(bodyParser.json()); app.listen(3000, () => { console.log("Server..

ETC

JavaScript - 구조 분해 할당

구조 분해 할당(Destructuring Assignment)? 배열이나 객체의 구조를 분해하여 분해된 값을 개별 변수에 담는 표현식 배열 구조 분해 변수를 선언하고 할당하는 과정 한 번에 가능 one, two, three는 우변에 위치한 arr의 값을 차례대로 할당받음 const arr = [1, 2, 3, 4, 5] const [one, two, three] = arr console.log(one, two, three) 1 2 3 객체 구조 분해 객체를 할당할 때는 분해하려는 프로퍼티의 키 사용 const obj = { x: 10, y: 20, z: 30 } const { x, y, z } = obj console.log(x, y, z) 10 20 30 변수 이름 변경 분해한 키에 :(콜론)을 붙이고..

JavaScript - Object.entries를 사용하여 객체를 배열로 변환

아래와 같은 객체를 Object.entries()를 사용하여 배열로 변환해보자. const obj = { x: 10, y: 20, z: 30 } Object.entries()만 사용 const arr = Object.entries(obj) console.log(arr) [ [ 'x', 10 ], [ 'y', 20 ], [ 'z', 30 ] ] map과 같이 사용 const arr = Object.entries(obj).map(([key, value]) => ({key, value})) console.log(arr) [ { key: 'x', value: 10 }, { key: 'y', value: 20 }, { key: 'z', value: 30 } ] 배열을 객체로 변환하기 위해서는? Object.fro..

NodeJS - Prisma

Prisma 프로젝트 설정 폴더 만들고 npm 초기화 mkdir prisma cd prisma npm init -y prisma, ts-node, @types/node 설치 npm install prisma @prisma/client typescript ts-node @types/node --save-dev prisma 초기화 npx prisma init 초기화하면 prisma 폴더와 .env 파일 생성 됨 .env에 환경변수 설정 DATABASE_URL="디비종류://유저이름:패스워드@localhost:포트번호/디비이름" DB_PORT=5432 DB_USER=test DB_PASSWORD=test DB_HOST=localhost DATABASE=postgres DB_SCHEMA=public DATABA..