본문 바로가기
API/MySQL API

Python으로 Mysql 접속, 회원 정보 수정 API

by 하니__ 2024. 5. 24.

 

이번엔 유저의 정보 수정이다

 

 

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번 홍끼리동을

 

이메일을 포함한 정보들을 바꾸려고 한다면

 

이메일을 제외한 정보들이 바뀌는 것을 확인 할 수 있다