flask
네이버 오픈API 활용 - Papago 번역 API
1. 애플리케이션 등록 네이버 오픈API를 사용하려면 먼저 네이버 개발자 센터에서 애플리케이션을 등록하고 클라이언트 아이디와 클라이언트 시크릿을 발급받아야 한다. 2. 중국어 번역 API 코드 문서를 보고 오픈 API의 요청 방식, 응답 방식 등을 확인하고 나의 서비스에 맞게 가공한다. class NaverPapagoResource(Resource): def post(self): # {"content" : "오늘은 하루종일 비가 온다."} data = request.get_json() # 네이버 파파고 API 호출 req_data = {'source' : 'ko', 'target' : 'zh-CN', 'text' : data['content']} headers = {'X-Naver-Client-Id': ..
네이버 오픈API 활용 - 뉴스 검색 API
1. 애플리케이션 등록 네이버 오픈API를 사용하려면 먼저 네이버 개발자 센터에서 애플리케이션을 등록하고 클라이언트 아이디와 클라이언트 시크릿을 발급받아야 한다. 2. 뉴스 제목 검색 API 코드 문서를 보고 오픈 API의 요청 방식, 응답 방식 등을 확인하고 나의 서비스에 맞게 가공한다. from flask import request from flask_restful import Resource import requests from config import Config class NaverSearchResource(Resource): def get(self): keyword = request.args.get('keyword') limit = request.args.get('limit') ## 네이버 A..
API서버 - 클라이언트에게 받은 이미지와 텍스트를 DB에 저장하는 API
클라이언트가 이미지와 텍스트를 보내면 받아서 내 DB에 저장하는 포스팅 API를 만들어보자. DB에 이미지를 저장할 때는 이미지 URL로 저장하기 때문에, 먼저 받은 이미지를 자동으로 내 AWS S3에 업로드 해야 한다. S3에 파일 업로드 참고: https://donghyeok90.tistory.com/201 AWS S3 - 파이썬 boto3로 이미지 파일 업로드 Flask를 사용하여 클라이언트로부터 이미지 파일을 받으면 AWS S3에 저장하는 API를 만들고자 한다. 먼저 boto3 라이브러리가 필요하다. 1. boto3 AWS에서 제공하는 Python용 AWS SDK Boto3를 사용하면 Python 애 donghyeok90.tistory.com 1. DB에 저장할 테이블을 만든다. 2. 개발한 포..
API서버 - AWS Rekognition을 사용한 Object Detection API
1. Rekognition AWS에서 제공하는 딥 러닝 기반 시각 분석 서비스 기계 학습을 통해 이미지 및 비디오 분석 자동화 기계 학습 모델 및 인프라를 구축하지 않고도 사전 훈련되었거나 사용자 지정 가능한 API 제공 예) 레이블 탐지, 얼굴 비교 및 검색, 얼굴 탐지 및 분석, 텍스트 탐지 등등 문서: https://aws.amazon.com/ko/rekognition/ 2. IAM 사용자 권한 수정 rekogniton을 사용할 수 있게 IAM 사용자 권한을 추가한다. 3. 객체 탐지 API 코드 from flask import request from flask_restful import Resource from datetime import datetime import boto3 from confi..
API서버 - Flask 쿼리스트링(Query String)을 사용한 API
1. 쿼리스트링(Query String)을 사용한 이유 메모장 앱의 API 서버 개발 중, 유저가 작성한 메모 리스트를 보여주는 GET 메소드 API 를 만들려 한다. 사용할 쿼리문은 아래와 같다. query = '''select id, title, datetime, content, createdAt, updatedAt from memo where userId = %s order by datetime desc;''' 하지만 위의 쿼리문으로 API서버를 만들게 되면, 몇 개가 있을지 모르는 메모 리스트를 한번에 모두 불러오게 된다. 한번에 그렇게 많은 정보를 처리하면 서버에 과부하가 걸리게 된다. 따라서 우리가 일반적으로 사용하는 앱들은 일정량의 리스트를 불러오고, 유저가 스크롤을 끝까지 내리면 추가로 다..
Flask - PROPAGATE_EXCEPTIONS에 대한 이해
0. PROPAGATE_EXCEPTIONS Flask의 Builtin Configuration Values 중 하나 문서의 설명에 따르면 '명시적으로 예외를 전파하는 것에 대한 활성화/비활성화' 라고 하는데 나는 이 설명을 제대로 이해를 못했다. 포스트맨으로 테스트를 해보다가 의미를 깨닫게 되었다. 1. PROPAGATE_EXCEPTIONS = False 인 경우 JWT 에러 예외처리를 일괄적으로 500 Internal Server Error로 한다. 2. PROPAGATE_EXCEPTIONS = True 인 경우 Flask에서 예외처리한 JWT 에러메시지와 HTTP 상태코드를 명시해서 리턴해준다.
Flask에서 JWT 사용하기 (flask-jwt-extended)
1. JWT(Json Web Token) 이해하기 잘 정리된 블로그를 참고하자 JWT에 대해 JWT(JSON Web Tokens)이란? 두 개체에서 JSON 객체를 사용하여 가볍고 정보를 안전성 있게 전달하는 방식 https://tools.ietf.org/html/rfc7519 JWT의 구성요소는? header.payload.signature header 알고리즘과 token 타입으로 nesoy.github.io [WEB] 📚 JWT 토큰 인증 이란? - 💯 이해하기 쉽게 정리 인증 방식 종류 (Cookie & Session & Token) 보통 서버가 클라이언트 인증을 확인하는 방식은 대표적으로 쿠키, 세션, 토큰 3가지 방식이 있다. JWT를 배우기 앞서 우선 쿠키와 세션의 통신 방식을 복습해 inp..
API서버 - Flask JWT를 사용한 로그아웃 API 만들기
1. 로그아웃 API from flask_restful import Resource from flask_jwt_extended import jwt_required, get_jwt # 로그아웃된 토큰을 저장할 set을 만든다. jwt_blocklist = set() class UserLogoutResource(Resource): @jwt_required() def post(self): # print(get_jwt()) jti = get_jwt()['jti'] # print(jti) jwt_blocklist.add(jti) return {'result' : 'success'}, 200 중복을 방지하기 위해 blocklist를 set으로 만들고 메소드를 실행하면 현재의 access_token을 blocklis..