본문 바로가기

Restful API29

[Restful API] 회원, 비회원 둘 다 동작하는 API 만들기 📝회원, 비회원 둘 다 동작하는 API 만들기 클래스 안에 함수를 만들때 위에 @jwt_required()를 입력하면 로그인한 사람만 그 페이지의 정보를 볼 수 있다 로그인 한 사람과 로그인하지 않은 사람도 볼 수 있게 하기 위해서는 @jwt_required(optional=True) 이렇게 입력 해야한다 user_id = get_jwt_identity() 했을때 로그인하지 않은 사람이라면 토큰값이 없기때문에 user_id에 None값이 저장된다 이 값으로 if문을 작성해 로그인한 사람과 로그인하지 않은 사람의 페이지를 다르게 보여줄 수 있다 class MovieListResource(Resource) : @jwt_required(optional=True) # 비회원도 동작 가능하게 설정 def get(.. 2023. 1. 10.
[Restful API] 실시간으로 추천하는 API 만들기 📝실시간으로 추천하는 API 만들기 전에 DB에 저장된 정보를 가져와서 작업한 후에 추천하는 API를 만들었는데(https://coding-jisu.tistory.com/194) 이번에는 실시간으로 추천하는 API 만들기를 해보았다 구글 코랩에서 작업에서 작업하는 과정을 비주얼 스튜디오 코드에서 진행해주면 된다 커넥션을 열고 전체 영화 별점에 대한 상관계수를 구한 변수와 추천받을 유저의 리뷰정보를 담은 변수를 만들어 추천기능을 만든다 class MovieRecommendRealTimeResource(Resource) : @jwt_required() def get(self) : user_id = get_jwt_identity() count = request.args.get('count') count = i.. 2023. 1. 10.
[Restful API] DB에 저장된 정보를 가져와서 작업한 후에 추천하는 API 만들기 📝DB에 저장된 정보를 가져와서 작업한 후에 추천하는 API 이런 API를 만들면 실시간이 아니므로 주기적(매일 밤이나 일주일 단위 등)으로 상관계수 파일을 업데이트 해야한다(batch 작업) 우선 추천하는 시스템 만들기 위해 DB에서 파일을 가져온다 내가 만들 시스템은 영화를 추천해주는 시스템이기 때문에 DB에서 영화정보와 리뷰정보 테이블을 가져왔다 ※ 가져올 테이블의 우측 클릭 후 Table Data Export Wizard 선택 후 제이슨 파일로 저장 저장한 파일을 가지고 구글 코랩에서 작업해줬다 (참고 https://coding-jisu.tistory.com/173) import numpy as np import pandas as pd # 데이터 불러오기 df_movie = pd.read_json.. 2023. 1. 9.
[Error] Object of type Decimal is not JSON serializable 📝Object of type Decimal is not JSON serializable 에러 해결하기 Falsk 웹 페이지에서 리스트를 가져오는 코드 개발중 에러발생 Object of type Decimal is not JSON serializable (Decimal 유형의 객체는 JSON 직렬화가 가능하지 않습니다) class MovieListResource(Resource) : def get(self) : order = request.args.get('order') offset = request.args.get('offset') limit = request.args.get('limit') try : connection = get_connection() query = '''select m.id, m.t.. 2023. 1. 9.
[Restful API] Query String 페이징 처리하기 📝Query String 페이징 처리하기 포스트맨에서 Query String할 키와 밸류값을 Query Params에 입력한다 ( http://localhost:5000/follow/memo?offset=0&limit=2 이대로 입력해도 자동으로 입력된다 ) offset 밸류값을 0, limit 밸류값을 2로 넣고 실행시키면 해당 데이터를 2개 끊어서 가져온다 코드를 작성할때 클라이언트에서 쿼리스트링으로 보내는 데이터는 request.args에 들어있다 변수로 저장해서 쿼리문에 사용하기 ※ 주의할점 MySQL Workbench 쿼리문 작성할때 컬럼은 n이다에만 %s 사용하고 그외는 변수를 더해준다 class MemoListResource(Resource) : @jwt_required() def get(s.. 2023. 1. 6.
[Restful API] Flask에서 JWT 사용하기 (로그인/로그아웃 API 만들기) 📝Flask에서 JWT 사용하기 (로그인/로그아웃 API 만들기) 새로운 파일인 유저 파일에 회원가입한 회원일때 비밀번호가 일치하면 로그인을 시켜주게 코드를 작성한다 ※ app.py에 경로 설정 (api.add_resource(UserLoginResource, '/user/login') class UserLoginResource(Resource) : def post(self) : # {"email": "abc@naver.com", # "password": "1234"} # 1. 데이터 받아오기 data = request.get_json() # 2. DB로부터 해당 유저의 데이터를 가져온다 try : connection = get_connection() query = '''select * from user.. 2023. 1. 5.
[Restful API] Flask에서 JWT 사용하기 (회원가입 API 만들기) 📝Flask에서 JWT 사용하기 (회원가입 API 만들기) 우선 JWT를 사용하기 위해 설치를 먼저 해준다 pip install flask-jwt-extended 컨픽(Config)파일 클래스 안에 JWT관련 변수를 셋팅해준다 class Config : # JWT 관련 변수를 셋팅 JWT_SECRET_KEY = '1234' JWT_ACCESS_TOKEN_EXPIRES = False # 만료없이 설정 PROPAGATE_EXCEPTIONS = True # 에러가 나면 보여줄것 app.py의 환경변수 셋팅 밑에 JWT매니저 초기화 코드를 입력해준다 from flask import Flask from flask_jwt_extended import JWTManager from flask_restful import.. 2023. 1. 5.
[Restful API] pbkdf2_sha256으로 비밀번호 암호화시키기 📝회원가입시 pbkdf2_sha256으로 비밀번호 암호화시키기 암호화를 사용하기 위한 인스톨 pip install psycopg2-binary pip install passlib 코드 작성 from passlib.hash import pbkdf2_sha256 from config import Config # 원문 비밀번호를 단방향 암호화 하는 함수 def hash_password(original_password) : salt = 'abcdefg' password = original_password + salt password = pbkdf2_sha256.hash(password) return password # 유저가 로그인할때 입력한 비밀번호가 맞는지 체크하는 함수 def check_password(o.. 2023. 1. 4.
[Restful API] MySQL 접속을 위한 유저를 따로 만들기 📝MySQL 접속을 위한 유저를 따로 만들기 특정 디비만 접속할 수 있는 계정을 하나 만든다 MySQL Workbench에서 새로운 서버를 만들고 아래 코드를 실행한다 use mysql; create user '사용할이름'@'%'identified by '사용할비밀번호'; grant all on 사용할DB.* to '사용할이름'@'%'; MySQL Workbench 홈으로 돌아와 Connection을 만들어 사용한다 ※ 정보는 위에 입력했던 이름과 비밀번호를 입력해준다 ※ 테이블을 만들때 안드로이드 개발과의 일관성 위해 컬럼은 헝가리안 표기법 사용한다 헝가리안 표기법? 한칸 띄우거나 _ 쓰지않고 대문자 사용 ex) createdAt 서버를 개발할때 python으로 mysql을 사용하기 위해 Visual .. 2023. 1. 4.
[Restful API] Config 파일 만들기 📝컨픽(Config)에 암호화 정보, 즉 보안관련 정보를 입력해 변수로 만들어 사용한다 Visual Studio Code에서 서버를 만들때 Config.py을 만들어 보안관련 정보를 class를 만들어 따로 입력해준다 class Config : HOST = '호스트' DATABASE = '데이터베이스' DB_USER = 'DB이름' DB_PASSWORD = 'DB패스워드' SALT = '암호화정보' 만든 변수들은 임포트해서 불러와 사용한다 import mysql.connector from config import Config def get_connection() : connection = mysql.connector.connect( host = Config.HOST, database = Config.DA.. 2023. 1. 4.