[Express] CRUD 기능 만들기
2024. 11. 14. 15:46
NestJS
이번 포스팅에서는 Express로 CRUD(Create, Read, Update, Delete) 기능을 구현하는 기본적인 흐름을 살펴보겠다.실제로 DB와 연결하지는 않았고, Express의 CRUD 처리 과정과 코드 흐름을 이해하는 데 집중했다. 🐱READ - 데이터 조회전체 데이터 조회전체 고양이 데이터를 조회하는 엔드포인트다.데이터베이스에서 데이터를 가져오는 것처럼 가정하고 Cat이라는 객체에서 데이터를 불러온다.만약 데이터 조회 중 에러가 발생하면 에러 메시지를 반환한다.import { error } from "console";import * as express from "express";import { Cat, CatType } from "./app.model";const app: expr..
[Express] 라우팅과 미들웨어
2024. 11. 14. 10:31
NestJS
NestJS에 관한 강의를 듣다 보니 라우터와 미들웨어라는 용어가 자주 등장했다.하지만 이런 개념을 처음 배우다 보니 다소 추상적으로 느껴져서 쉽게 와닿지 않는 부분이 있었다.그래서 두 개념의 차이점을 조금 더 명확하게 이해하기 위해 추가로 찾아보게 되었다. 라우팅라우팅은 특정 엔드포인트(URI + HTTP 메소드(GET,POST,,,) )에 대한 클라이언트 요청에 애플리케이션이 응답하는 방법을 정의해두는 것을 말한다. 예를 들어 " '/user' 구조의 URI가 get 메소드로 올 대는 user.html을 보내주자!" 와 같은 규칙들을 미리 짜놔야 한다.Express에는 이를 간단하게 처리해주는 함수가 존재한다. 구조는 다음과 같다. app.METHOD(PATH,HANDLER);- app은 expre..
TypeScript와 Express로 Node.js 서버 구축하기
2024. 11. 13. 14:44
NestJS
타입 스크립트는 JS의 확장 언어다.타입스크립트로 작성한 코드를 JS로 컴파일하여 컴파일 된 JS 코드가 Node.js(JS의 런타임 환경)에서 실행되면서 프로그램이 움직인다. package.json 설정package.json에 다음과 같은 스크립트를 추가했다.{ "scripts": { "build": "tsc", -> npm run build 시 실행 tsc -> (루트 경로에서 tsconfig.json을 읽어서 옵션에 맞게 컴파일해라) "start:dev": "tsc-watch --onSuccess \"node dist/app.js\"", -> npm run start:dev 실행 시 해당 명령어 실행 tsc로 계속 컴파일을 했을 때 성공했다면 다음 명령어 실행 node 로 dist 폴..
서버 환경에 ssl 인증서 적용하기(zeroSSL)
2024. 8. 12. 11:26
HTTP
무료 ssl 인증서는 3개월마다 한번씩 만료된다. 이를 서버에 다시 적용할 때마다 방법을 다시 찾아보는게 귀찮아서, 문서화도 하고 약했던 서버 관련 개념도 정리할 겸 블로깅해본다. 따라서 이번 포스팅에서는 Nginx를 이용해 Ec2 인스턴스에서 SSL/TLS 인증서를 설정하고, HTTPS 보안 연결을 활성화하는 과정을 작성해보려 한다. SSL/TLS 는 웹 사이트와 사용자의 브라우저 간 통신을 암호화하여, 데이터를 안전하게 만드는 프로토콜이다.SSL과 TLS는 사실상 같은 기능을 하는 프로토콜이지만 TLS가 SSL의 후속 버전이다. 자세한건 다음 블로깅에서 포스팅할 예정 일단 인증서 발급 사이트에서 다운받은 인증서를 인증서 가져오기로 가져온다! (ZeroSSL를 이용했다) 1️⃣ 다운받은 인증서 가져오..
Spring 프로젝트에서 웹소켓 적용하기~!! 2탄
2024. 6. 12. 21:44
Spring
🔎하고싶은것유저중 한명이 POST,UPDATE,DELETE요청을 보내서 여행 일정을 변경하면같은 세션에 있는 다른 유저들에게도 페이지 새로고침되어 변경사항이 보였으면 좋겠다! 🔎구현 방법서버에서 클라이언트의 엔티티변경(POST,UPDATE,DELETE) 요청을 처리한 후 브로드캐스트하여 변경사항을 모든 클라이언트에게 알림=> 웹소켓에 연결된 클라이언트는 메시지를 받을 때 페이지를 새로고침함 브로드캐스트❔❓한 장치가 여러 장치에게 동시에 메세지를 전송하는 것을 의미하며여기서는 웹소켓을 통해 서버에서 클라이언트들에게 동시에 메세지를 전송하는 방식을 의미한다. 브로드캐스트: 한 번의 메시지 전송으로 네트워크에 연결된 모든 장치(또는 지정된 그룹)에게 메시지를 전달하는 방식멀티캐스트(Multicast):..
Spring 프로젝트에서 웹소켓 적용하기~!! 1탄
2024. 6. 10. 23:01
Spring
여행 일정 공유사이트를 만들며 여러명이서 실시간으로 편집상태를 공유하는 기능이 있으면 좋겠다고 생각했고, 이를 위해 웹소켓을 연동하게 되었다. 기본 HTTP는 stateless하기 때문에 서버에 변경사항이 생겨도 클라이언트에서 요청을 하지 않으면 변경사항이 적용되지 않는 반면 WebSocket은 지속적으로 connection을 유지하기 때문에 실시간으로 변경사항이 적용된다! 웹소켓의 이런 특징을 이용해 실시간 편집기능을 구현할 수 있다. 그리고 WebSocket 은 HTTP를 통해 최초 연결(핸드세이크)되며 이후 일정 시간이 지나면 HTTP연결은 자동으로 끊어지고 WebSocket Connection은 유지된다 다만 웹소켓은 stateful 프로토콜로서 connection을 항상 유지해야하기 때문에 트..
[ERROR]Git에서 폰트파일 깨지는 문제
2024. 5. 23. 14:54
Error
🔎문제상황폰트 파일을 깃에만 올리면 깨지는 문제가 발생했다. 🔎원인폰트 파일이나 바이너리 파일은 본질적으로 텍스트 파일이 아니기 때문에,Git이 이 파일들을 텍스트 파일로 처리하려고 할 경우 파일이 깨질 수 있다. 🔎해결법 gitattributes에 다음 설정 추가 * text eol=lf .gitattributes 파일에서 특정 파일 타입에 대해 binary 속성을 지정하거나,모든 파일에 대해 -text 속성을 지정하여 Git이 라인 엔딩을 변경하지 않도록 할 수 있다. text 속성 -> Git이 해당 파일을 텍스트 파일로 인식하도록 지정텍스트 파일로 인식된 파일은 Git이 라인 엔딩을 자동으로 변환할 수 있게 됨. eol=lf -> 라인 엔딩을 강제로 LF(Line Feed)로 설정하..
프로그래머스 SQL 고득점 KIT 뿌시기 - SELECT 1
2024. 5. 5. 18:37
SQL
코딩테스트 평균 일일 대여 요금 구하기 ROUND(컬럼명, 1(소수 둘쨰자리에서 반올림=첫째자리까지 보임)) => 반올림 AVG(컬럼명) => 컬럼의 평균 AS => 컬럼 이름 지정 답SELECT ROUND(AVG(DAILY_FEE),0) AS AVERAGE_FEEFROM CAR_RENTAL_COMPANY_CAR cWHERE c.CAR_TYPE = 'SUV' 프로그래머스 조건에 맞는 도서 리스트 출력하기 DATE FORMAT 함수DATE_FORMAT(컬럼명, format형식) FORMAT 형식에 들어갈 수 있는 형식 지정자%Y: 4자리 연도 (예: 2024)%y: 2자리 연도 (예: 24)%m: 월 (01~12)%d: 일 (01~31)%H: 24시간 형식의 시간 (00~23)%i: 분 (00~59)..
Google Oauth2
2024. 4. 2. 15:18
Spring
OAuth란? 타사 웹사이트나 웹이 리소스에 접근할 수 있게 허용해 주는 것이 주 목적이다 OAuth는 인증(Authentication)과 인가(Authorization)중 인가에 조금 더 초점을 맞추고 있따. 인증이란 ? 인증은 사용자가 자신의 신원을 사용하는 프로세스이다. 예를 들어 시스템에 로그인하려면 직원 ID, 또는 사용자 ID를 확인한다. 인가란? 인증된 사용자에 대해 특정 자원 또는 서비스에 대한 엑세스 권한을 부여 즉, 누가 어떤 자원에 접근할 수 있는지 결정 구글 로그인을 예로 들자면, 우리는 사용자의 정보, 즉 해당 사용자가 구글에 가입이 되어있는지는 구글 서버측에서 확인을 하고, 그 후 해당 정보와 인증된 사용자에게 권한을 제공해준다. 웹 서버 애플리케이션에서의 Google Oauth..