우선 회원가입이니 유저 테이블을 만들어야 한다
간단히
유저이름과 이메일 패스워드를 받고
활성화인지 아닌지는 따로 체크
가입시간과 수정시간을 따로 체크
그리고 이제 API 설정부터 하자
새로운 데이터가 들어가니 POST
경로는 user의 register로 하자
그리고 이제
1. app.py 설정
api.add_resource(UserRegisterResource, '/users/register')
추가 해주고
2. user.py 설정
class UserRegisterResource(Resource) :
def post(self) :
# 1. 클라이언트가 보낸 데이터 받아준다
data = request.get_json()
클라이언트가 보낸 데이터를 일단 받은 뒤
2 - 2. 데이터가 모두 있는지 확인
required_fields = ['username', 'email', 'password']
for field in required_fields:
if field not in data or not data[field]:
return {"result": "fail", "message": f"'{field}' field is missing"}, 400
입력 받는 데이터들을 리스트로 만든뒤
for 문과
if 문을 응용하여
예를 들면
유저네임 : 000
이메일 :
비번: 0000
의 경우와
유저네임: 000
비번: 000
의 두 경우 모두 잡아내는것
그리고 그후
2 - 3. 이메일 주소 형식이 올바른지 확인
try:
validate_email(email)
except EmailNotValidError as e:
return {"result": "fail", "message": str(e)}, 400
이메일 형식이 올바른지 확인후
알맞지 않다면 바로 리턴
2 - 4. 비밀번호 길이가 유효한지
예) 비번은 4자리이상 12자리 이하
if not len(data['password']) >= 4 or not len(data['password']) <= 12 :
return {"result": "fail", "message": "Password 4-12"}, 400
설정상 비밀번호가 4자 이상 12자 이하라면
알맞지 않을 시에 바로 리턴한다
3. 앞의 결과가 아무 이상 없다면 비밀번호를 암호화 한다
password = hash_password(data['password'])
4. DB 에 저장한다
try:
connection = get_connection()
query = '''insert into user
(username, email, password)
value
(%s,%s,%s);'''
record = (data['username'],data['email'],password)
cursor = connection.cursor()
cursor.execute(query,record)
connection.commit()
cursor.close()
connection.close()
DB에 연결하고
받은 정보를 insert 하고
커서를 불러오고 실행하고 커밋하고
DB연결과 커서를 자원해제한다
5. 에러 상황도 리턴해준다
except Error as e:
if cursor is not None:
cursor.close()
if connection is not None:
connection.close()
return {"result" : "fail","error": str(e)}, 500
6. user_id 를 바로 클라이언트에게 보내지않고
JWT로 암호화 하여 인증토큰을 보내야 한다
user_id = cursor.lastrowid
cursor.close()
connection.close()
DB에 회원가입하여 user 테이블에 insert된 후
이 user 테이블의 id값을 가져와야 한다
DB연결과 커서를 끊기 전으로 올라가서
커서의 마지막 행 아이디라는 기능을 사용하여
id값을 가져오자
access_token = create_access_token(user_id)
그리고 이것을 토큰 생성 한 뒤에
7. 클라이언트에게 JSON으로 리턴
return {"result" : "success", "access_token" : access_token }
하게 되면 성공메세지와
토큰을 보낼 수 있겠다
'API > MySQL API' 카테고리의 다른 글
Python으로 Mysql 접속, 로그아웃 API (0) | 2024.05.22 |
---|---|
로그인 API (0) | 2024.05.22 |
게시글 비공개,공개하는 API (0) | 2024.05.21 |
게시글 삭제API, delete (0) | 2024.05.21 |
게시글 수정API, update (0) | 2024.05.21 |