이번엔 유저의 정보 수정이다
API 설정
경로는 회원가입과 같은 유저의 레지스터
그리고 HTTP 메소드는
CRUD의 Update에 해당하는
PUT으로 설정한다
그리고 헤더에는 인증토큰을 받아오고
바디에 는 수정하는 정보들을 입력한다
사진에는 이메일이 적혀있지만
이메일은 로그인을 할때 신분을 확인하는 고유한 값이므로
수정을 할 수 없다
다음은
user.py 수정
@jwt_required()
def put(self) : # 회원정보 수정
역시 인증이 필요하니 jwt_required를 적어준 뒤
put 함수를 적어준다
data = request.get_json()
if data.get('password') is None or data.get('password').strip() == '' or \
data.get('nickname') is None or data.get('nickname').strip() == '':
return {'result': 'fail'}, 400
if not len(data['password']) >= 4 or not len(data['password']) <= 12 :
return {"result": "fail", "message": "Password 4-12"}, 400
password = hash_password(data['password'])
그리고 리퀘스트로 수정을 입력하는 정보들을 받아와
data로 저장
그리고 입력받은 정보에 비어있는 데이터는 없는지
키값인 패스워드 or 닉네임을 안 적지 않았는지를 체크한다
이때 이메일은 변환되면 안되니 적지 않는다
그리고 이상이 없다면 패스워드가 4자이상 12자 이하인지 체크해준다
마지막으로 이상이 없다면 패스워드를 해싱한다
try :
connection = get_connection()
user_id = get_jwt_identity()
query = '''UPDATE user
SET password = %s,
nickname = %s
WHERE id = %s;'''
record = (password,
data['nickname'],
user_id)
cursor = connection.cursor()
cursor.execute(query,record)
connection.commit()
cursor.close()
connection.close()
이제 DB에 연결후
인증토큰으로부터 유저 아이디를 가져오고
쿼리문을 비밀번호와 이름을 바꾸겠다고 작성
그리고 늘 그렇듯
커서를 불러와 실행후 저장, 자원해제 해준다
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
return{"result" : "success"}
그리고 에러상황에 대비해 에러문구 작성과
아무 이상없을시 성공 메세지를 리턴한다
그래서 8번 홍끼리동을
이메일을 포함한 정보들을 바꾸려고 한다면
이메일을 제외한 정보들이 바뀌는 것을 확인 할 수 있다
'API > MySQL API' 카테고리의 다른 글
Python으로 Mysql 접속, 영화추천 API (0) | 2024.05.27 |
---|---|
Python으로 Mysql접속, 영화리스트 가져오는 API (0) | 2024.05.27 |
Python으로 Mysql 접속, 회원탈퇴 API (0) | 2024.05.24 |
Python으로 Mysql 접속, 로그아웃 API (0) | 2024.05.22 |
로그인 API (0) | 2024.05.22 |