TIL 15. 사용자 생성 API 만들기

sm·2022년 6월 15일
0

📝📌📒
📌 기본적인 회원가입의 기초가 되는 사용자 생성 API

const http = require('http')
const express = require('express')
const { PrismaClient } = require('@prisma/client')

const prisma = new PrismaClient() 

const app = express()
app.use(express.json()) // for parsing application/json
app.post('/users/signup', async (req, res) => { // 1
  try { // 2
   
    const { email, password } = req.body // 3

    console.log('email: ', email, 'password: ', password)
	
		// 비밀번호가 짧을때 // CUSTOM_ERROR

    // 가입했던 이용자가 또다시 가입을 요청할 때 // CUSTOM_ERROR



    const createdUser = await prisma.$queryRaw`
      INSERT INTO users(email, password) VALUES (${email}, ${password});
    ` // 4

    return res.status(201).json({ message: "CREATED" }) // 5
  } catch (err) { // 2
    console.log(err)
    return res.status(500).json({ message: err.message }) // 6
  }
})

const server = http.createServer(app) // express app 으로 서버를 만듭니다.

const start = async () => { // 서버를 시작하는 함수입니다.
  try {
    server.listen(8000, () => console.log(`Server is listening on 8000`))
  } catch (err) { 
    console.error(err)
//    await prisma.$disconnect() // 에러가 발생했을 시에 database 연결을 종료합니다.
  }
}

start()

📌코드설명

  1. 첫번째 인자 : routing 할 엔드포인트, 두번째 인자 : 콜백함수
    콜백함수가 async로 선언된 이유 : 비동기를 동기적으로 처리하기 위한 await 예약어를 사용하기 위함.
  2. try / catch 문
    요청에 따른 실행에서 나는 에러를 핸들링 할 수 있다.
  3. 구조분해 할당
    http request 객체의 body 에서 클라이언트가 post 메소드에 담아 보낸 key 값들을 구조분해 할당
  4. 데이터베이스 접근
  5. response 객체 사용하여 응답 전송
  6. 에러 핸들링
profile
Today I Learned

1개의 댓글

comment-user-thumbnail
2022년 7월 14일

콜백 함수가 선언된 이유는 비동기입니다. await 예약어를 사용하여 비동기식 처리를 트리거하십시오.
try / catch 문과 주문형 실행은 오류를 처리할 수 있습니다 구조 이전

답글 달기