반응형
비밀번호 암호화가 없는 회원가입
프로젝트 생성
mkdir westagram-node
cd westagram-node
npm init -y
초기설정
- Express 설치 / 적용
- nodemon 설치 / 적용
- cors 설치 / 적용
- dotenv 설치 / 환경 변수 적용
- morgan 설치 / 적용
npm install express
...
morgan은 http요청과 에러를 기록해주는 미들웨어라고 한다. 아직 사용법을 모르겠으니 일단 설치만 했다.
모든 cors 요청 허용하는법
const express = require('express');
const cors = require('cors');
const app = express();
app.use(cors());
typeorm-db연결
npm install mysql2
npm install typeorm
.
// .env
TYPEORM_CONNECTION = mysql
TYPEORM_HOST = 127.0.0.1
TYPEORM_PORT = 3306
TYPEORM_USERNAME = root
TYPEORM_PASSWORD = 비밀번호
TYPEORM_DATABASE = db이름
TYPEORM_LOGGING = TRUE
// app.js
require('dotenv').config();
const http = require('http');
const express = require('express');
const cors = require('cors');
const { DataSource } = require('typeorm');
const myDataSource = new DataSource({
type: process.env.TYPEORM_CONNECTION,
host: process.env.TYPEORM_HOST,
port: process.env.TYPEORM_PORT,
username: process.env.TYPEORM_USERNAME,
password: process.env.TYPEORM_PASSWORD,
database: process.env.TYPEORM_DATABASE
});
myDataSource.initialize().then(() => {
console.log("Data Source has been initialized")
}).catch(() => {
console.log("Database initiate fail")
})
const app = express();
app.use(express.json());
app.use(cors()); // 모든 cors요청 허용
const server = http.createServer(app);
server.listen(8000, () => {console.log("서버켜짐");});

회원가입
1. 알맞은 API 호출 URL을 설정하여서 클라이언트와(httpie/postman) 통신을 성공해주세요.
- /users : 유저관련된 api이기때문에
2. 알맞은 http 메소드를 선정하여서 유저의 정보를 백엔드 서버에 전달해주세요.
- post : body에 담긴 내용으로 데이터를 생성/수정할때 사용
3. 데이터가 생성됐을 때에 알맞는 http 상태코드를 반환해주세요.
- 201 : post요청에 따라 백엔드 서버에 데이터가 잘 생성/수정되었을때 코드
5. http response로 반환하는 JSON 데이터의 형태는 다음과 같습니다.
{
"message" : "userCreated"
}
회원 테이블 구조
mysql> desc users;
+---------------+---------------+------+-----+-------------------+-------------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+---------------+------+-----+-------------------+-------------------+
| id | int | NO | PRI | NULL | auto_increment |
| email | varchar(100) | NO | UNI | NULL | |
| nickname | varchar(50) | YES | | NULL | |
| password | varchar(300) | NO | | NULL | |
| profile_image | varchar(3000) | YES | | NULL | |
| created_at | datetime | NO | | CURRENT_TIMESTAMP | DEFAULT_GENERATED |
+---------------+---------------+------+-----+-------------------+-------------------+
id, created_at은 db에서 자동으로 값을 할당한다.
// app.js
app.post('/users', async (req, res) => {
const {email, nickname, password, profileImage} = req.body;
// 쿼리를 날리는건 비동기식으로 처리되는데 쿼리를 실행한 후 응답을 해줘야 하니까 async await를 썼다.
await myDataSource.query(
`INSERT INTO users (email, nickname, password, profile_image)
VALUES (?, ?, ?, ?)`
, [email, nickname, password, profileImage]);
res.status(201).json({"message" : "userCreated"});
});
필수값인 email, password만 넣어서 회원가입을 했다.


데이터가 잘 들어온 것을 확인할 수 있다.
반응형
'TIL' 카테고리의 다른 글
| node.js | 인스타그램: 비밀번호 암호화(bcrypt) (1) | 2022.10.04 |
|---|---|
| node.js | 인스타그램: 게시글 CRUD (1) | 2022.10.04 |
| node.js | express, TypeORM 적용한 CRUD API만들기 - 2 API작성 (0) | 2022.10.02 |
| node.js | express, TypeORM 적용한 CRUD API만들기 - 1 db(dbmate) (0) | 2022.10.02 |
| node.js | TypeORM 적용하기 (0) | 2022.10.01 |