본문 바로가기

Flask8

Flask restful api 외부접속, 액세스 권한에 의해 숨겨진 소켓에 액세스를 시도했습니다 공유기 포트포워딩 코드 일부 # 좋아요 # 이포스팅에 좋아요를 누르는 엔드포인트 api.add_resource(LikeResource, '/posting//like') api.add_resource(LikeListResource, '/like') # 태그관련 api.add_resource(PostingTagResource, '/posting/tag') if __name__ == '__main__': app.run(host='0.0.0.0', port=80) app.run() -> app.run(host='0.0.0.0', port=80) 으로 변경 파이썬에서 실행시 루프백:80 호스트:80 두개가 러닝중임을 확인 공인:8000-> 호스트:80 포트포워딩했으므로 다른컴이나 스마트폰으로 접속해본다. publ.. 2023. 11. 7.
Flask 영화의 리스트를 가져오되, 내가 좋아요 한 영화면 좋아요표시 order = cnt, avg ( 갯수정렬, 평균정렬) offset, limit = 페이징처리 테스트를 위해 user_id = 1004 jwt토큰 로그인 mysql workbench 조인할 테이블의 상태 user_movie = 두개를 묶는 조합을 유니크하게 처리 사용한 sql문 (정리안됨 주의) SELECT * FROM movie_db.rating; insert into rating (user_id,movie_id,rating) values ( %s, %s, %s); select * from rating where user_id = 1004; delete from rating where movie_id = 1; select rating.id, rating.movie_id, rating.rating, mo.. 2023. 1. 10.
Flask 영화 추천 API from flask import request # 클라이언트가 보낸 데이터를 받기 위한 라이브러리 from flask_restful import Resource # API를 만들기 위한 라이브러리 from mysql.connector import Error # DB에 연결할 때, 에러가 발생할 수 있으므로, 에러처리를 위한 라이브러리 from flask_jwt_extended import jwt_required, get_jwt_identity # JWT를 사용하기 위한 라이브러리 from mysql_connection import get_connection # DB에 연결하기 위한 함수 import pandas as pd class MovieRecommendResource(Resource) : # 영화 .. 2023. 1. 9.
Flask 영화명 검색 API FULLTEXT 로 하는 이유는 검색의 속도 향상을 위한것. class MovieSearchResource(Resource) : def get(self) : # 영화 정보를 가져오는 API keyword = request.args.get('keyword') order = request.args.get('order') offset = request.args.get('offset') limit = request.args.get('limit') try : connection = get_connection() # 2가지 정렬조건을 만들어서, 사용자가 선택한 정렬조건에 따라서 쿼리를 실행하도록 한다. query = ''' select m.id, m.title, ifnull(count(r.movie_id), 0) .. 2023. 1. 9.
Flask postman mysql 셀렉한 컬럼만 가져온다 유저아이디가 = 6인것 datetime 으로 내림차순 정렬 0부터 3개 까지 SELECT id, title, datetime, content, createdAt, updatedAt FROM memo where userId = 6 order by datetime desc limit 0, 3; # 클라이언트에서 쿼리스트링으로 보내는 데이터는 # request.args.get('키값', '기본값') 으로 받아온다. # 키값은 쿼리 스트링과 같아야한다. offset = request.args.get('offset') # page가 없으면 1을 가져온다. limit = request.args.get('limit') # limit가 없으면 3을 가져온다. # 2. db에 저장된 데이터를 가져.. 2023. 1. 6.
Flask 백엔드 개발 큰그림 요약 레파지토리 생성 db 서비스용 계정생성 -- 서비스가 이용할 데이터베이스를 만든다. use mysql; -- 서버마다 유저를 만든다// 이계정은 이 DB만 접속가능 // @'%' == 네트워크로 작업가능하게 한다는것 //identified by == 패스워드 create user 'memo_user'@'%' identified by 'yh1234db'; -- 권한설정 grant all on memo_DB.* to 'memo_user'@'%'; db생성 호스트 AWS RDS 주소, 아디'memo_user', 비번'yh1234db'; 테스트커넥션 == 성공 스키마 생성 utf8 utf8_unicode_ci 권한이 없으면 생성되지 않음 위에서 설정한 memo_DB 와 스키마 이름이 같아야함. 포스트맨 뉴 컬렉.. 2023. 1. 5.
Flask 회원가입 API : email체크, 비밀번호 길이체크 암호화, jwt(user_id), 로그인, 로그아웃, 로그인 유저의 리퀘스트 처리, Headers(Authorization & Bearer) , 토큰의 특성 jwt를 사용하는 이유는 보안때문 클라이언트는 사용자의 고유한 id를 보관하고 있어야 그유저가 어떤 행동을 했을때 그 id를 서버로 보내서 처리를 해야하는데. 그냥 숫자로 보관한다면 해킹등의 문제가 발생한다 때문에 회원가입시에 유저정보를 db에 저장할때 유저의 고유한 id는 토큰으로 저장하고 클라이언트에서 토큰형태로된 고유한id값을 리퀘스트 하면 db에 저장되어있는 id 값을 가져와서 체크한다. 비밀번호도 db에 저장할때 미리 작성해 두었던 from passlib.hash import pbkdf2_sha256 을 이용한 함수를 써서 암호화하여 저장. email은 진위성 체크 라이브러리를 사용한다. from email_validator import validate_email, EmailNotValidErr.. 2023. 1. 5.
Flask 1단계 Postman, Mysql, Github 기본세팅 백엔드 서버를 프레임워크 (Flask)로 구현하는 기본 1. 화면 기획문서를 보고 -- 서비스가 이용할 MySQL 데이터베이스를 만든다. use mysql; -- 서버마다 유저를 만든다 -- 이계정은 이 DB만 접속가능 -- @'%' == 네트워크로 작업가능하게 한다는것 -- dentified by == 패스워드 create user '아이디'@'%' identified by '비번'; -- 권한설정 grant all on recipe_DB.* to '아이디'@'%'; mysql 스키마를 생성한다. 테이블을 만든다. +버튼을 눌러 해당 정보를 기입하여 커넥션 데이터 베이스 작업이 완료되었다면 github 레파지토리는 프라이빗(보안)으로 만들고 클론하고 실행. vscode로 메인앱 코드작성 메인 화면은 유.. 2023. 1. 4.