본문 바로가기

javascript

(26)
5. API & 프로젝트 설정 기초 환경변수 : 운영체제나 프로그램이 동작할 때 참고하는 외부 설정 값 | 민감 정보 보호 및 환경 마다 다른 설정을 쉽게 바꾸기 위해 사용 보통 .env 파일에 서버 정보, 비밀값들을 넣음깃(허브)에 업로드를 하면 안되니까 같은 디렉토리 안에 .gitignore 파일을 만들어서 아래와 같은 내용 추가# 환경변수.env.env.*# 의존성node_modules/ import dotenv from "dotenv";dotenv : .env 파일로부터 환경 변수를 읽어들이고, 이를 process.env. 객체를 통해 접근할 수 있도록 하는 역할API 코드 구현Controller : 라우팅 관련 코드 | 클라이언트의 요청을 받아 서비스에 전달DTO : 입력 데이터를 정형화된 형태로 파싱, 검증하여 전달하는 역할S..
[Express] 파일 업로드 파일과 multipart/form-data각각의 데이터 타입 그대로 전송됨 | 파일의 경우, 별도의 변환 과정을 거치지 않기에 파일 전송에 주로 사용웹 페이지에서 폼을 만들 때, multipart/form-data를 설정해 놓으면 브라우저에서 알아서 처리참고문헌: https://developer.mozilla.org/ko/docs/Web/HTTP/MIME_types#multipartform-data MIME 타입 (IANA 미디어 타입) - HTTP | MDN미디어 타입 (Multipurpose Internet Mail Extensions 또는 MIME type로도 알려져 있음)이란 문서, 파일 또는 바이트 집합의 성격과 형식을 나타냅니다. MIME 타입은 IETF의 RFC 6838에 정의 및 표준화되어..
[Express] 라우터 라우트 중복 제거하기app.route() 사용// app.route('경로명')app.route('/products') .get((req, res) => { res.json({ message: 'Product 목록 보기' }); }) .post((req, res) => { res.json({ message: 'Product 추가하기' }); }); 라우터 만들기express.Router() 사용(마무리로 app.use() 사용)const productRouter = express.Router();productRouter.route('/products') .get((req, res) => { res.json({ message: 'Product 목록 보기' }); }) .post((re..
[Express] 미들웨어 미들웨어? Express에서 리퀘스트와 리스폰스 사이에 위치하여 어떤 작업을 실행하는 함수 미들웨어 구조파라미터가 2개인 경우(가장 기본적인 구조) : req, res3개인 경우 : req, res, nextnext : 다음 미들웨어로 넘어가는 파라미터(다음 미들웨어를 가리킴)4개인 경우 : err, req, res, next참조문서: https://expressjs.com/ko/api.html#req Express 4.x - API 참조Access the API reference for Express.js detailing all modules, methods, and properties for building web applications with this version.expressjs.com// ..
Prisma 기본 Prisma 초기화npx prisma init --datasource-provider postgresql.env 파일에서windows의 경우 [postgres:password]로 변경하고, mydb를 생성할 db 이름 입력DATABASE_URL="postgresql://postgres:password@localhost:5432/comazon?schema=public"PORT=3000 User 모델 만들기// @id, @unique: 유니크한 값// @default(uuid()): uuid - 36자로 이뤄진 형식// ? : 값을 비워놔도 된다는 의미... NULL로 표시model User { id String @id email String @unique firstName Stri..
MongoDB 사용하기 스키마 정의하기스키마: 데이터의 틀import mongoose from "mongoose";const TaskSchema = new mongoose.Schema( { titile: { type: String, }, description: { type: String, }, siComplete: { type: Boolean, default: false, }, }, { // timestamps 사용시 mongo가 알아서 create, update app 필드를 생성&관리함 timestamps: true, });// 첫..
Express로 API 만들기 라우트: 특정 엔드포인트를 담당하는 코드app.jsimport express from 'express';const app = express();// 첫번째 파라미터: url 경로 | 두번째 파라미터: 실행할 콜백함수app.get('/hello', (req, res) => { res.send('Hello Express!');});// 3000: 포트 번호app.listen(3000, () => console.log('Server Started'));쿼리스트링 처리하기쿼리스트링? url에서 물음표(?) 뒤에 오는 부분import express from 'express';import tasks from './data/mock.js'const app = express();app.get('/tasks', (..
Todo API 문서 | 구독 관리 API 문서 Todo API 문서Task - 할 일을 관리하는 API GET /tasks GET /tasks/:id POST /tasksDELETE /tasks/:id PATCH /tasks/:id속성_id: string - Task 객체에 대한 고유 식별자title: string - 태스크 제목(최대 30자)description: string - 태스크 상세 설명isComplete: boolean - 태스크 완료 여부createdAt: string - 객체가 생성된 시점에 타임스탬프... YYYY-MM-DDTGG:MM:SS.SSSZ 사용, 자동 생성 필드updatedAt: string - 객체가 수정된 시점에 타임스탬프 ... YYYY-MM-DDTGG:MM:SS.SSSZ 사용, 자동 생성 필드목록 조회엔드..