과제 할때 예시는 대충 적었는데 >> 이걸로 바로 복사해서 api 확인해보면 편하다
삭제 api명세서 작성시
처음부터 이력서 로그인하고 이력서를 띄우는거라 삭제 권한은 부여하지 않았다.
데이터 베이스 ERD 작성할때는 카멜케이스가 아니라 _ 언더바로 작성
서버가 죽지 않고 동작하기 위해서 에러핸들러 추가
readme
>> # 쓰면 제목
```sh
안에 목록을 넣을 수 있음 >> 코드 블럭
```
https://velog.io/@gmlstjq123/Readme.md-%ED%8C%8C%EC%9D%BC-%EC%9E%91%EC%84%B1%EB%B2%95
Readme.md 파일 작성법
이번 포스팅에서는 여러분들의 Github Repository를 한층 업그레이드 시킬 수 있는 Readme.md 파일에 대해서 다뤄보겠습니다. 1. README 1) 개념 README 파일은 주로 Github 프로필 혹은 Repository에 대한 설명을
velog.io
https://gist.github.com/ihoneymon/652be052a0727ad59601
마크다운(Markdown) 사용법
마크다운(Markdown) 사용법. GitHub Gist: instantly share code, notes, and snippets.
gist.github.com
혹시 import하면서 파일 위치를 잘 잡았나 확인하려면
command 누르고 클릭하면 확인가능 ../ ./ 갯수 헷갈릴때 좋다.
ESLint 설치 >> 변수 선언이 되어있는지를 바로 알려줌
npm init @eslint/config@latest
설치할때 선택한것
상황따라 다르게 체크
+ eslint 확장프로그램 설치
만약 변수 선언 안된거 표시 안해도 되는 부분이 있으면
eslint.confih.js파일에서
이런식으로 달주기 ->> 중간에 rules: {} 이렇게 안쪽으로
지정하고 : 표시
표시 >> error > 빨간색
>> off >> 없앰
>> warn > 주황색
yarn add -D prisma >> 스키마를 생성하고 테이블을 관리하는 용도
yarn add @prisma/client >>> 쿼리를 날리는 역할 >> 배포시에도 사용
yarn prisma init --datasource-provider mysql
>>mysql 명령어는 Prisma ORM(객체 관계 매핑 도구)을 사용하여 MySQL 데이터베이스를 설정하고 초기화하는 명령어
1. Prisma 프로젝트 초기화
2.데이터 소스 설정 >> schema.prisma 파일 내의 데이터 소스 부분을 자동으로 MySQL로 설정
>>>>>>여기까지 하면 기본 셋팅파일이 생김
Stirng으로 지정하면 기본적으로 varchar가 뜬다 > mysql, prisma
이름을 다르게 쓸거면 @map{"") >> 이때는 아무리 ''로 prettier로 지정했어도 ""로 작성
이름을 그대로 작성할거면 안쓰면된다
prisma / docs >>>orm에서 보면 더 자세하게 찾아볼 수 있다.
prisma 확장프로그램 다운후
프라즈마 스키마로 가서
오른쪽 버튼 문서 서식으로 가면 기본포멧터를 프리즈마로 변경 >> 이러면 파일을 자동으로 포멧팅해줌
스키마 만들고 DB테이블 생성 push와 migrate 방법이 있지만
빠른 프로토 타이핑에 적합한 push 선택
yarn prisma db push
하고 테이블이 잘 생성되었는지 확인하기
>> 만든 erd랑 유사한지 확인
메세지도 따로 상수폴더안에 관리하면 좋은데
큰 객체안에 분류해서 넣으면 된다.
라우터도 각각 라우터에 api를 풀로 적었었는데
각각 겹치는 라우터끼리 파일에 모아두고 index 라우터 파일에 라우터 대표 api 지정해서
통으로 묶어서 app.js에 넣으면 된다.
joi로 유효성 검사할때
모든 에러들을 next에 담아두고 따로 만들어둔 에러, 검증 폴더에서
각각 검증별로 파일을 나누고 joi는 스키마를 작성해야하니 먼저 스키마 작성후 검증작업을 하면된다.
>> 또한 검증에 겹치는 부분은 하나로 묶어두기 common
joi는 같은 값이 들어가게 지정할수 있는데 >> valid(Joi.ref(key:'어떤 키와 동일하게 넣을 것 인지')
회원가입할때
비밀번호랑 비밀번호 확인을 req.body에서 받았는데
api에서 담을때 굳이 안담아도 된다.
이미 joi에서 검증을 완료했으므로
이메일 중복은 따로 조사해봐서 처리해야하기에 바로 확인할 수 없는 부분
그래서 라우터에서 처리해야한다.
>> db로 조회하려면 prisma만들어둔 곳에서 가져온다.
비밀번호 해쉬를 위한 bcypt
보통 saltOrRounds는 10으로 사용하긴 한다.
api검증할때 base url만들어두면 편하다 >>>>>>>>>>>Thunder client 방법찾기 >> 강의는 insomnia였음
로그인할때는 회원가입과 다르게 비밀번호 제약조건을 알려주지 않는다
>>> 악의적으로 접근하는 사람에게 힌트를 줄 수 있기 때문에
프리즈마 >> 데이터베이스의 내용과 비교해야할때는
prisma.x.내장함수({}) >>> 이건 공식문서 찾아보기 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
여기에서 밑에
이부분은 db(프리즈마)에서 이메일을 바탕으로 찾은 > 유니크한 유저값을 찾아서 > 유저에 담은걸
이제 변수 isPasswordMatched
부분에 먼저 user이 존재하고, && 오른쪽에 값을 확인하는데
bcript.compareSync은 bcrypt 라이브러리의 메서드
입력된 평문 비밀번호(plain text password)와 저장된 해시된 비밀번호(hashed password)를 비교하는 데 사용
일치하면 true 아니면 false를 나타낸다.
둘 다 true가 나오면
&&논리 연산자는 둘 다 맞으면 오른쪽 값이 들어가게 되는데 그럼 반환받은 true 가 들어가게 된다.
jwt로 시크릿키 만들기
https://www.avast.com/random-password-generator#mac
Random Password Generator | Create Strong Passwords | Avast
You are putting yourself at risk if you are entrusting an unknown online random sequence generator tool for your passwords. If you use a free password generator online, the site might be decrypted or presenting compromised information, meaning hackers coul
www.avast.com
추천
엑세스 토큰 만들때 expiresIn은 유효기간
환경변수를 추가하면 서버를 껐다가 다시 실행해야한다.
환경변수(environment variable)는 운영 체제나 응용 프로그램에서 사용되는 변수로, 시스템 환경이나 프로세스 환경을 설정하고 구성하는 데 사용됩니다. 환경변수는 특정 값들을 저장하며, 이러한 값들은 프로그램이 실행될 때 참조되어 프로그램의 동작을 제어하거나 영향을 줄 수 있습니다. 환경변수는 주로 운영체제에서 사용하는 중요한 설정 정보를 포함하며, 파일 경로, 시스템 설정, 사용자 정보 등이 포함될 수 있습니다.
예를 들어, 환경변수는 다음과 같은 정보들을 포함할 수 있습니다:
• PATH: 실행 파일의 경로를 지정하며, 운영 체제가 명령어를 실행할 때 이 경로들을 검색합니다.
• HOME 또는 USERPROFILE: 사용자의 홈 디렉터리 경로를 지정합니다.
• TEMP 또는 TMP: 임시 파일이 저장되는 디렉터리 경로를 지정합니다.
• JAVA_HOME: 자바 개발 키트(JDK)의 설치 경로를 지정합니다.
엑세스토큰 > jwt가 제대로 들어갔는지 확인
https://jwt.io/
JWT.IO
JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.
jwt.io
----JWT 발생할 수 있는 에러 -----
https://www.npmjs.com/package/jsonwebtoken
jsonwebtoken
JSON Web Token implementation (symmetric and asymmetric). Latest version: 9.0.2, last published: 9 months ago. Start using jsonwebtoken in your project by running `npm i jsonwebtoken`. There are 29428 other projects in the npm registry using jsonwebtoken.
www.npmjs.com
프리즈마 받아올때 비밀번호는 제외하고 받아오고 싶으면
prisma schema에 generator부분에 넣기
previewFeatures = ["omitApi"]
넣고 터미널에 yarn prisma generate
https://www.prisma.io/docs/orm/reference/prisma-client-reference
Prisma Client API | Prisma Documentation
API reference documentation for Prisma Client.
www.prisma.io
prisma 설치 >개발용
@prisma/client 설치 > 배포용
yarn prisma init --datasource-provider mysql >>mysql사용하는데 파일 내의 데이터 소스 부분을 자동으로 MySQL로 설정
비밀번호 해쉬 > bcypt
유호성 검증과 에러 처리 > joi
.env사용 > botenv
prettierrc > prettier
nodemon설치
'스파르타 내배캠 _과제, 프로젝트, 특강' 카테고리의 다른 글
타입에러 해결 - string을 숫자로 변환하려는데 객체가 되어서 NaN되는 현상 (0) | 2024.07.12 |
---|---|
개인과제 영화검색 해설강의 > 나중에 볼거 (0) | 2024.05.02 |