전체 글

전체 글

    [미니터] 인증

    1. 인증 : 사용자의 신원을 확인 애플리케이션에서 사용자가 로그인 할 때 아이디와 비밀번호를 확인하는 절차 가입 : 사용자의 아이디와 비밀번호 생성 가입한 사용자의 아이디와 비밀번호는 암호화 해서 저장 DB에 저장 로그인 시 본인의 아이디와 비밀번호 입력 비밀번호 입력 시 DB에 저장된 암호화 되어있는 비밀번호와 비교 비밀번호 일치 시 로그인 성공 로그인 성공 시 API 서버가 access token을 클라이언트에게 전송 로그인 성공 후 프론트엔드 서버에서 access token을 첨부하여 request를 서버에 전송 (매번 로그인 하지 않도록) 2. 사용자 비밀번호 암호화 암호화 하는 이유 : 외부 해킹공격, 내부의 DB 접근 시 비밀번호를 모르게 하기 위함 암호화 방법 : 단방향 해시 함수 사용 (..

    [미니터] DB연결 - 타임라인

    [미니터] DB연결 - 타임라인

    1. DB연결 함수 생성 def get_timeline(user_id): timeline = current_app.database.execute(text(""" SELECT t.user_id, t.tweet FROM tweets t LEFT JOIN users_follow_list ufl ON ufl.user_id = :user_id WHERE t.user_id = :user_id OR t.user_id = ufl.follow_user_id """), { 'user_id' : user_id }).fetchall() return [{ 'user_id' : tweet['user_id'], 'tweet' : tweet['tweet'] } for tweet in timeline] 2. HTTP 요청 http -..

    [미니터] DB연결 - 팔로우와 언팔로우

    [미니터] DB연결 - 팔로우와 언팔로우

    1. DB 연결 함수 생성 - 팔로우 def insert_follow(user_follow) : return current_app.database.execute(text(""" INSERT INTO users_follow_list( user_id, follow_user_id )VALUES ( :id, :follow ) """), user_follow).rowcount def insert_unfollow(user_unfollow) : return current_app.database.execute(text(""" DELETE FROM users_follow_list WHERE user_id = :id AND follow_user_id = :unfollow """), user_unfollow).rowcoun..

    [미니터] DB연결 - tweet 올리기

    [미니터] DB연결 - tweet 올리기

    1. DB 함수 생성 def insert_tweet(user_tweet) : return current_app.database.execute(text(""" INSERT INTO tweets ( user_id, tweet ) VALUES ( :id, :tweet ) """), user_tweet).rowcount current_app : create_app 함수에서 생성한 app 변수를 외부에서도 사용 가능하게 함 INSERT : 트윗 데이터를 tweets 테이블에 저장 rowcount : 테이블의 row 개수를 세줌 2. HTTP 요청 http -v POST 127.0.0.1:5000/tweet id=1 tweet="Hello Jarvis" DB 확인

    DB 연결

    지난 프로젝트 때는 pymysql을 통해서 계정연결을 했는데 이번에는 sqlalchemy로 계정연결만 하고 sql문으로 DB를 다루었다. SQL 공부했던 것도 다시 이어서 해야겠다.! SQL은 왜 자꾸 까먹을까..? 그런데 엔드포인트에 하나씩 구현했을 때는 잘 되는데 왜 코드를 다 합쳐서 하면 에러가 날까.... 사용자 입력부터가 안된다아아아!!! 앞으로 아주 험난한 길을 갈 것 같은 예감이 든다. 책 내용을 일일이 타이핑 해가며 이해하고 있는데 이럴 때 마다 정말 힘빠진다..ㅠㅠ 밥을 안먹어서 그런걸까..? 오늘은 여기까지 하고 내일 다시 에러 해결부터 해보쟛! 는 한번 만 더 검색해봤는데 오타였다.. 아 진짜 오늘은 여기까지 해야겠다. 그래도 해결하지 못하는 에러가 아니라서 다행이다ㅠㅠㅠㅠㅠ

    [미니터] DB 연결 - 회원가입

    [미니터] DB 연결 - 회원가입

    1. create_app() 함수 내에 코드 추가하여 실행 @app.route("/sign-up", methods=['GET','POST']) def sign_up(): new_user = request.json new_user_id = app.database.execute(text(""" INSERT INTO users( name, email, profile, hashed_password ) VALUES ( :name, :email, :profile, :password ) """), new_user).lastlowid row = current_app.database.execute(text(""" SELECT id, name, email, profile FROM users WHERE id = :user_..

    [미니터] sqlalchemy를 사용한 API와 DB 연결

    [미니터] sqlalchemy를 사용한 API와 DB 연결

    1. config.py 파일 생성 db = { 'user' : 'DB사용자이름', 'password' : '비밀번호', 'host' : '127.0.0.1', 'port' : 3306 , # 포트정보 : RDBMS는 주로 3306을 통해 연결 'database' : 'miniter' # DB 이름 } DB_URL = f"mysql+mysqlconnector://{db['user']}:{db['password']}@{db['host']}:{db['port']} /{db['database']}?charset=utf_8" 2. app.py 수정 from sqlalchemy import create_engine, text from config import DB_URL def creat_app(test_confi..

    API 구현 완려!

    코드를 직접 하나씩 타이핑 해보면서 여러가지 생각이 많이 들었다. 특히 알고리즘 문제를 풀 때가 생각났다. 맨 처음에 알고리즘 공부를 시작할 때 알고리즘을 대췌 왜?? 해야되는거즤 라는 의문을 가지고 공부했다. 이 의문을 해결하기 위해 검색을 해 보았지만 와닿는 답은 없었다. 그런데 말입니다. 어제, 오늘 구현 해보면서 아~아~ 이래서 알고리즘을 했었구나 해야하는구나 라는게 확 와닿았다. 엔드포인트 설정 후 함수를 만들기 전에 사용자 정보를 담을 배열, 트윗 내용을 담을 배열, 등등.. 알고리즘 문제를 풀때 입력값을 넣을 배열을 선언해주거나 변수를 설정해줬던게 아~ 이래서..이래서.. 그리고 API에 대한 지식도 많이 찾아보았는데 나를 이해시킬 순 없었다. (이해하기 싫었을지도..) API 또한 나에게 ..