본문 바로가기
Back-End Frameworks/Node.js

13) Nodejs - 백앤드 넓고 얕게 맛보기_정리_Postman 사용하기(출처 유튭 강의)★★★

by Downy_J 2023. 11. 3.
728x90
반응형
SMALL

백엔드를 개발하고

API를 테스트 할때

 

프런트에서 테스트를 하는게 아니라

https://www.postman.com/downloads/

 

Download Postman | Get Started for Free

Try Postman for free! Join 25 million developers who rely on Postman, the collaboration platform for API development. Create better APIs—faster.

www.postman.com

포스트맨을 사용하여 테스트를 하는거다


사용하기

왜 우리 라우트 경로에 뭐 다 만들어 놨지 않음?

 

저 하면 됨

 

get으로 / 기본 경로 불러오면 이래 나옴
get /login
get /registe
POST /login
POST /register

 

사용법은 이미 알고 있음. .

개발하면서 이거 사용 해봤기 때문에. .ㅎㅎ


클라우드를 이용해서 데이터베이스 구축 하기

https://aws.amazon.com/ko/?nc2=h_lg

 

클라우드 서비스 | 클라우드 컴퓨팅 솔루션| Amazon Web Services

 

aws.amazon.com

계정을 만들고 로그인을 하면된다

 

그런데 계정만들때 신용카드로 뭔 인증? 그런게 좀 필요

루트 사용자로 로그인을 할건데

계정 하나로 여러 아이디를 부여해 줄수 있다
그게 IAM 사용자

그럼 그 둘의 차이는

내가 우리 기업의 루트계정 ID를 갖고 있음.
이때 각각 하휘 팀에 권한을 줄건데
이때 IAM계정을 만들어 주는거다


RDS 서비스를 검색 클릭
서비스 제공 지역은 서울로 설
결제 대시보드 에선
뭔 서비스를 이용했고 얼마를 썻다가 나옴
자 그래서 RDS가 뭐냐면
클라우드 기반 데이터베이스를 말한다

DB만들자 - AWS 로 만드는건데 이거 그냥 넘어가..
지우려다가 언젠간 쓸일 있겠지 싶어 놔둠
DB 인스턴스 라고 누르면
이런 화면이 나오는데

우리가 만드는 데이터 베이스들의 목록이 나열되는곳
데이터베이스 생성을 누르면

생성방식이 나온다 표준 생성 ㄱㄱ
엔진 옵션 선택 화면이 나온다
MySQL사용 ㄱㄱ
여기서 템플릿 선택이 있다
연습용인데 무료 써야지
프리 티어 ㄱㄱ
사용할 DB인스턴스의 식별자로 ASW에서 고유한 값이다
임의로 써 넣고

마스터 사용자명은 절때 까먹으면 안됨

마스터 암호도 있는데 얘도 까먹음 안
이대로 패스
스토리지 자동 조정 활성화
저거 체크하면 돈나간다니깐 체크 해제
연결 정보

여긴 다른건 다 디폴트값 쓰고

저기 퍼블릭 엑세스 만 예로 체크

저게 뭐냐면 너 아마존꺼 퍼블릭IP쓸거냐?
아님 로컬에서도 사용되게 할거냐를 묻는
VPC 보안 이건
데이터베이스에서 접속하는 트레픽을 지정해 줄수 있
MySQL은 기본으로 3306번 포트를 제공한다
암호 인증으로 하고

아까 까먹으면 안된다가 이거 할라고 한
아까 DB인스턴스 식별자와 동일하게 해놓고

넘어가
저거 자동 백업 활정화 화면을 캡쳐해서 사진으로 스냅샷을 찍는건데

공부가 다끝나고 테이블이든 뭐든 삭제를 해도 저건 남아 있어서 돈이 지불되게 된다

해제해
삭제 방지 활성화 
저건 나중에 실제 서비스를 진행 할땐
체크를 해야 함

그리고 체크를 해두면 나(루트계정자)도 삭제를 못하는데
직접 

mysql 워크밴치에서 DB도 만들고 테이블도 만들고 해보자고

테이블 만들기... 전에 DB부터 만들어야지

워크밴치 들어가면 상단 메뉴들 중 드럼통 하나 있음 거 누르라
테이블 명

글 셋팅은

이대로 해야 한글임 Apply ㄱㄱ
만들었음 테이블 폴더 안에 뭐 만들어야지
use DB명;

만든다 테이블을 테이블면 (
id 필드 문자형(30자) null 삽입 금지,
name 필드 문자형(30자) null 삽입 금지,
psword 필드 문자형(30자) null 삽입 금지,
데이터 생성시 현재 날짜와 시간을 자동으로 입력하도록 설정,

PK는 id로 지정
);

이란 의미
users 테이블을 만들었으니 쟤들 넣어줘야지
테이블 생성 잘 됬고..
테이블 정보도 잘 입력 됬고..

이렇게 데이터도 직접 입력을 해주니

잘 들어가 졌넹

 


만든 DB 설정 하고 연결 해야지


소스 폴더에 user.json은 필요 없다
config 폴더를 만들고 db접근을 위해 코드를 넣어주자
얘 설치하고
이렇게 불러다 넣어주면 됨

UserStroage 지금 user.json이랑 연결되있으니깐 이거 전부 걷어 내야 함!!


getUserInfo() 여긴 데이터 베이스에 접근 한 다음
데이터를 갖고오기만 하면 됨!

먼저는 테스트..
에..? 에러가 뜨는데 이건 
User 에서 저기 빈값을 넣었을때 그냥 undefined가 떠서 그런건데 뭔 구조분해 할당이란걸 해줘야 한다

됬고..
집어 넣었던 데이터는 다 나옴
자 근데 쿼리 부분 에 특정 id를 넣어야 하니 

이렇게  WHER절을 쓰고 id = ? 인걸 갖고와라, [id]

라고 쓰면 해당하는 값을 불러오게 되 있

값을 리턴 해줘야 하는데 그냥 
return data;

하게 되면 보안상 안된다

일단 구조를 생각 해보자
fs 을 썻을땐 자체적으로 Promise를 지원해서 썻으나
mysql은 그런게 없다

때문에 직접 이 Promise를 만들어줘야 한다

쿼리를 실행 하는데 성공하면 resolve()를 실행시키고
실패하면 reject()를 실행 시켜라 그럼 저 안에 들어갈건 각각 data와 err이다
실행...

왜????????????
data 안에 뭐가 들었나 콘솔찍어보니 배열이 들어있음

그럼
data[0] 번째꺼 가져오라 하면 될듯..?

성공

※ 중요

함수는 한 가지 기능만 수행
하게 구현 해야함.
Promise로 만들어주지 않으면 하나의 함수에서 DB조회, 로그인검증, 클라이언트에 응답 까지
하는 "이도 저도 아닌 코드"가 됨

클래스는 UserUserStroage 처럼 각자의 역할을 분명히 구분 해줘야 함
UserStroage는 DB의 CRUD를 수행하고
해당 데이터의 검증은 User가 수행하게 역할 구분 해야 함

이걸 바탕으로 좀 더 나은 코드를 짜보는게 좋음

회원 정보 가져오는거 query 따로 분리해 관리하고

save에 복붙 해서 쿼리만 수정 해주
query문은 저장을 하는거니깐 INSERT INTO를 썼고

던져줄 갑으로 userInfo 안에 id, name, psword 가 있으니 연결하고

저장 하는것 뿐이니 data 값은 필요가 없음.. 빼
에러는 reject()에 err 넣고
resolve()안에는 success: true 라고 Object를 넣어주자
새로운 값 넣어 저장 잘 됨

Web Server와 WAS의 차이점

클라이언트에서 데이터가 넘어왔을때

 

서버에서 데이터를 가공을 한다?

WAS

 

아니 그냥 정적 데이터 그대로 보여준다

WS

 

 

728x90