Wecode - Project 2 (부트캠프)/Project 2 과정

Project 2 : sprint 1주 중간 회고(HTTP, RESTful API, AWS) **추후 링크 추가**

JBS 12 2023. 9. 26. 15:52

Project 2- Backend 의 목표를 다시 보며, 내가 이 부분을 잘 학습했는지 

돌아보고, 부족한 부분은 채워넣기

  • 1차 체크리스트
    • HTTP 기본 개념 (요청/응답, stateless)를 이해하고 있고 메세지 구조를 이해하고 있다.
    • GET, POST 메소드 차이점을 알고, 프론트에서 넘어오는 데이터를 어떻게 처리해야 하는지 알고 있다.
    • RESTful API 개념을 이해하고 URL 주소를 RESTful 식으로 구현할 수 있다.
 

Foundation 2- Http, 인터넷부터 api 호출까지 (수정)**

태생부터가 자바스크립트는 웹사이트를 위해 만들어진 것 --> 동적으로 만들기 위해 생겨난거니까 자바스크립트가 원래 엄청 느렸고 (C,C#에 비해) 이상한 언어인데 보편화돼서 쓰는거라 속도 빨

pm-developer-justdoit.tistory.com

 

get method의 2가지 방법 (query, params)

get방식은 주소창을 이용하는 것 post는 body에 값을 담아야 하는 것 (req: body --> request의 body ) 2가지 방법 : query, params params 방법 : 쓰고 변수 쓰면, # :id :id가 params에 들어온다 Query 방법 ex1 q=jo (q를 jo

pm-developer-justdoit.tistory.com

 

[Server Communication] HTTP, HTTPS, get/post method (app.get, app.post)

프론트가 물리적으로 떨어져있는 내 웹브라우저까지 와야하는데 백엔드에 요청하고 받아야 하는데 물리적으로 멀리 떨어져잇는 서버에 요청해야하는데 이 통신이 어떻게 이루어지는가 통신

pm-developer-justdoit.tistory.com

 

Project 2 - 2일차 : [Restful API] 세션 (path부터 다시)**

앞으로는 restful api 엄격하게 add, create 가 들어가지 않게 리뷰해서 main branch에 들어가지 않게끔. main branch에는 엄격하게 지켜져야 함 호출할 때, 프론트가 json body에 담아서 가져가는게 아니라, 프

pm-developer-justdoit.tistory.com

 

Project 2- 2일 차: [API]세션(1) Path parameter

Project 2 - 2일차 : [Restful API] 세션 (path부터 다시)** 앞으로는 restful api 엄격하게 add, create 가 들어가지 않게 리뷰해서 main branch에 들어가지 않게끔. main branch에는 엄격하게 지켜져야 함 호출할 때,

pm-developer-justdoit.tistory.com

 

Project 2- 2일 차: [API]세션(2) Query Parameter (정렬부터 다시)**

Query Parameter 1. query parameter란? url에서 특정한 조건을 주고 싶을 때 사용하는 매개변수 유형 같은 API를 호출한다고 해도, 서로 다른 조건으로 나열하는 것이 필요한 상황에 사용 URL 끝에 물음표(?)

pm-developer-justdoit.tistory.com


:: Database & SQL

  • ERD modelling--> 1:1 , 1:N one to many, N:N many to many 개념을 알고 있다.
  • 요구사항에 맞게 데이터 베이스 모델링 설계를 할 수 있다.
  • JOIN 기본 개념을 이해하고 있고, LEFT JOIN, RIGHT JOIN, INNER JOIN, OUTER JOIN의 차이점들을 이해하고 있다.
 

Product2 - 2일차(1) : ERD modeling

각자 1시간씩 생각해보고 그려보고 테이블과 관계성을 고려하기로 했다. 나는 일단 erd 관계, modelling 툴을 사용하지 않고, 먼저 손으로 그리면서 하기로 했다. 쇼핑몰 erd 검색해서 나오는 table name

pm-developer-justdoit.tistory.com

 

Project 2- 2일차 (4): [erd 모델링] 각자 작성 후 다같이 수정 및 리뷰 (다시 읽어보기)**

[진행 방식] 1. pk, fk 협의 (pk 빼고는 다 fk) 2. 화살표 어떻게 갈지 최대한 완벽하게 설계해도 결국엔 수정할 게 나와서 일단 넘어가도 됨 수요일 오전 dbmate 만들고 목금, mvp 하고 (추가 기능은 현진

pm-developer-justdoit.tistory.com


:: Node.js + Express + TypeORM

  • 기세팅(npm init, npm package 설치 | package.json 관리, TypeORM을 이용한 MySQL DB연결) 혼자서 
  • Node.js + Express 기반의 Layered Pattern의 폴더 디렉토리 구조를 이해하고 있으며, 각 파일의 목적과 용도를 이해(server.js / app.js / routes / controllers / services/ models[dao] 등)
  • 데이터 베이스에 저장된 User정보를 리턴하는 엔드포인트를 구현할 수 있다.
  • Frontend로 부터 전달된 다양한 종류의 데이터를 Backend 데이터 베이스에 저장 할 수 있다.
  • 쿼리 스트링과 JSON으로 전달되는 데이터를 어떻게 받아서 처리하는지 알고 있다.
  • SQL Raw Query문을 사용하여, DB CRUD(Create, Read, Update, Delete)을 구현 할 수 있다.
  • 프론트엔드 개발자와 소통하여, Frontend 서버와 Backend 서버를 연결 할 수 있다.
  • AWS에서 서버를 생성하여 Node.js + Express 기반의 애플리케이션을 배포할 수 있다.
  • 스크럼 진행 방식에 대해서 이해했고, 스크럼 방식 아래 프로젝트 진행할 수 있다.

 TypeORM을 이용한 MySQL DB연결

 

Foundation 1.5 - 백엔드 서버, 데이터베이스 서버, express, mysql, Typeorm 관계

코딩하면서 항상 관계가 연결이 안 되던 게, 코드부터 치고 나서 강의를 다시 들으니 이제 연결이 된다 처음부터 깃허브 올리는거 까지 다 담긴 흐름 인증-인가 기능이 담긴 백엔드 API를 만드는

pm-developer-justdoit.tistory.com

 

 Layered Pattern의 폴더 디렉토리 구조

 

Project 1- 3일 차: 경래 멘토님 [코드 리뷰] - app.js 뜯어보기 + Layered Pattern

프로그래밍은 이해와 적용이다. 무슨 함수를 쓰는지 뜯어보아야 한다. 어떤 변수를 쓰는지 보아야 한다. 궁금해 하고. (그리고, 코드가 완벽하면 통신할 때 오류가 날 확률이 적은데 주니어의 경

pm-developer-justdoit.tistory.com

 

Project1- 3일 차: Layered pattern 개념 (API Architecture, 관심사 분리,)

Layered pattern 📍개요 🗣 특별한 구조 없이 한 파일에 모든 코드를 구현: 코드의 양이 많지 않을 때는 간단, but 코드의 양이 조금만 많아져도 오히려 코드 유지 보수가 어려워진다. 실제 기업의 시

pm-developer-justdoit.tistory.com

 

project1- 2일차(3): layered pattern 실전 -project 1으로 **

project 1 복사 붙여놓기 복사본은 깃 반영 안 됨 ls- al 해서 .git 떠도 반영 안 된다. ls-al 해서 나오는 건 git 삭제 remote 연결 안 될 것 단방향에 따라서, 각 파일의 앞단에서 export로 내보낸거를 require

pm-developer-justdoit.tistory.com

 User정보를 리턴하는 엔드포인트를 구현

 

Project 2- 5일차 (1): 내가 짠 [회원가입 API 및 설명]

내가 작성한 const express = require('express'); const morgan = require('morgan'); const cors = require('cors'); require('dotenv').config(); const app = express(); app.set('port', process.env.PORT || 8000); app.use(cors()); app.use(morgan('dev')); app.

pm-developer-justdoit.tistory.com

 

 

Project 2- 3일 차: API 짜기 연습 **

우리팀이 오전에 회의 및 협업 없어서, 개인공부하다가 다른 팀 API 공부 및 연구하는 미팅에 청강 들었다 그 팀은 pm이 팀원들 공부하듯이 하기에. 혼자 연습해보았다. 다른팀의 페이지와 우리팀

pm-developer-justdoit.tistory.com

 

 

Project 2- 4일차 (3): 회원가입, 로그인 API 구조화

이후 5일 차 standing meeting, Pull request review 이후 수정 Project 2 - 5일 차 (3): standing meeting- [프론트 엔드와 협의] 및 [회원가입 코드 분석] [회원가입] 필수 / 선택 입력값 데이터 - 필수 1)생년월일 프론

pm-developer-justdoit.tistory.com

 

Project 2 - 2일차 : [Restful API] 세션 (path부터 다시)**

앞으로는 restful api 엄격하게 add, create 가 들어가지 않게 리뷰해서 main branch에 들어가지 않게끔. main branch에는 엄격하게 지켜져야 함 호출할 때, 프론트가 json body에 담아서 가져가는게 아니라, 프

pm-developer-justdoit.tistory.com

 

 

AWS에서 서버를 생성

추후 추가될 링크

 

 

SQL Raw Query문을 사용하여, DB CRUD(Create, Read, Update, Delete)

추후 추가될 링크 - 상세페이지 / 전체페이지 -read 

 

Project 2- 3일차: 백엔드 플랜 미팅 part1. dbmate [데이터베이스 생성]

erd diagram으로 export 해서 dbmate 만들기 1차 프로젝트 때 직접 dbmate 생성을 해보았기에, 다른 방법을 시도하고, 효율성을 중시하는 방향으로 추출하기로 했다. 1. dev에 가서 pull 받는다 2. database 설정

pm-developer-justdoit.tistory.com


:: HTTP & Restful API

  • Unit-Test를 통해 구현한 함수를 상황에 따라 평가할 수 있다
  • Pagination의 개념 이해하고, limit과 offset을 이용하여 '제한된 범위 안에 있는' '데이터만을 추려내어' Frontend에 전달.
  • Filtering의 개념을 이해하고, Client/Frontend로 부터 쿼리 스트링을 받아서, '희망한 데이터만을 추려내어' Frontend에 전달
  • Ordering/Sorting의 개념을 이해하고, 요청에 의해 '순서가 재배치된 데이터 모음'을 Frontend에 전달할 수 있다.
  • Docker의 기본 개념을 이해하고, 개발된 환경을 Docker를 이용하여 배포할 수 있다.

 

Pagination의 개념>  limit과 offset을 이용 > '제한된 범위 안에 있는' '데이터만을 추려내어' Frontend에 전달

추후 추가될 링크

Filtering의 개념> Client/Frontend로 부터 쿼리 스트링 > 희망한 데이터만을 추려내어' Frontend에 전달

추후 추가될 링크

Ordering/Sorting의 개념  > 요청에 의해 '순서가 재배치된 데이터 모음'을 Frontend에 전달

추후 추가될 링크

Docker의 기본 개념 > Docker를 이용하여 배포


취업 준비를 지금부터 J/D를 분석하며 하고 있는데,

Node.js + Express , AWS 클라우드 서비스와 

HTTP & Restful API 에 대한 중요성을 알고 있기에, 이 부분을 추석 연휴 동안에는 더 채워 넣기로.