9주차 - 팀프로젝트(1)

시유야·2023년 4월 25일
0
post-thumbnail

API 설계

(1) URI의 엔드포인트와 http 메소드 결정

http 메소드 :
get : 읽거나 검색
post : 생성 (create) -요청 시 마다 새로운 데이터 생성
put : 처음 한번만 생성하고 이후로 그것을 수정
delete : 삭제

회원가입 :

  • /user/register.
  • http 메소드 : POST ( 사용자 정보를 처음db 저장(만드는)하는 과정이니까)

로그인 :

  • /user/login
  • get

(2) req로 받을 json과 res로 보낼 데이터(json)을 결정

  • 요청 json : name,email,password
  • 응답 json : id, name, email, password, description, _id, createdAt, updatedAt, __v

=> 개발 편의를 위해 Mongoose가 반환하는 데이터를 그대로 응답 데이터로 씀

  • @@id: 유니크한 값 (uuid 라이브러리로 생성) 프론트에서 식별에 사용
  • email, name: 요청(request)으로 온 데이터 그대로
  • password: 사용자가 입력한 비밀번호의 해쉬
  • description: 사용자에 대한 설명 (프론트에서 User Card에 사용됨)
  • _id: Mongodb가 자동으로 생성하는 아이디
  • createdAt: Mongoose의 timestamp 기능 활용
  • updatedAt: Mongoose의 timestamp 기능 활용
  • __v: Mongodb가 자동으로 생성

(3) mongoose schema 생성

반환할 json데이터(특히 id) 바탕으로 schema 만듬

const UserSchema = new Schema({
  ... 
});

(4)3계층 구조 코드작성- Router

req,res 표현이 쓰이고,
URI엔드포인트
http메소드
이 파일에서 작성

이 라우터 층에서 사용할 서비스 층의 함수(메소드)를 결정
-> 서비스 이름 : userAuthService
-> 메소드 이름 : addUser

(5) Service

3계층 구조는 class 를 활용 . class 생성하고 이름을 userAuthService로 한다.
static과 async가 붙은 addUser메소드 만든다.

이 서비스 층에서 사용할 모델 층의 함수(메소드) 결정
-> 모델 이름 : User,
-> 메소드 이름 : create

(6) Model

class 생성하고 이름은 User
mongoose model의 쿼리함수 create, findOne등이 사용된다.

profile
i'm happy enough.

0개의 댓글