깃헙 레포: https://github.com/Comparelt/comparelt-api
GitHub - Comparelt/comparelt-api: The backend server with Flask & PostgreSQL
The backend server with Flask & PostgreSQL. Contribute to Comparelt/comparelt-api development by creating an account on GitHub.
github.com
대학교 팀 프로젝트에서 크롤링 웹서비스를 구성하게되었다.
주어진 기간이 길지않아서 백엔드를 구성하는데 많은 시간을 들일 수 없어서 Flask와 PostgreSQL로 빠르게 API 서버를 구축하였다.
대략적으로 API 서버 기능을 명세하면 다음과 같다.
프론트엔드를 구성하는 팀에게 알려주기 위해 Swagger를 사용하여 API별 용도와 필수 파라미터, 입력 예시에 대해 문서화를 하기로 하였다. Flask-RESTX를 사용하면 Swagger와 flask-rest를 둘 다 사용할 수 있어 효율적으로 보였다.
Welcome to Flask-RESTX’s documentation! — Flask-RESTX 0.5.2.dev documentation
Welcome to Flask-RESTX’s documentation! Flask-RESTX is an extension for Flask that adds support for quickly building REST APIs. Flask-RESTX encourages best practices with minimal setup. If you are familiar with Flask, Flask-RESTX should be easy to pick u
flask-restx.readthedocs.io
API 서버를 구성하기 전에 Flask와 PostgreSQL를 연동할 필요가 있었다. flask_sqlalchemy와 config.ini를 통해 PostgreSQL을 연동하였다.
# config.ini [DEFAULT] SQLALCHEMY_DATABASE_URI: postgresql://postgres:asdf@localhost:5432/comparelt
# app.py import configparser from flask import Flask from flask_sqlalchemy import SQLAlchemy config = configparser.ConfigParser() config.read('../config.ini') app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = config['DEFAULT']['SQLALCHEMY_DATABASE_URI'] # To Connect to DB app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False # To avoid FSADeprecationWarning db = SQLAlchemy(app) if __name__ == "__main__": app.run(debug=True, host='0.0.0.0', port=80)
# models.py from api import db class User(db.Model): __tablename__ = 'user' # declare User Table Columns id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String) email = db.Column(db.String) password = db.Column(db.String) def __init__(self, username, email, password): self.username = username self.email = email self.password = password def __repr__(self): return '<id {}>'.format(self.id) def serialize(self): return { 'username': self.username, 'email': self.email, 'password': self.password, }
#api/__init__.py from flask_migrate import Migrate from api.app import app, db from api.user import models migrate = Migrate(app, db)
flask db init # migrations 폴더가 생성된다. flask db migrate # migrations를 데이터베이스에 적용한다.
Flask 서버를 시작하면, 다음과 같이 정상적으로 연동된 것을 볼 수 있다.
만약 다음과 같이 psycopg2가 없다고 ModuleNotFoundError: No module named 'psycopg2'고 뜨면, psycopg2를 설치해주면 된다.
MacOS에서 psycopg2 설치에러가 발생하는 이슈에 대한 해결 방법은 해당 포스트에 정리해놓았다.
API 설계 및 구현은 다음 포스트에 이어서 하겠다.
Flask-RESTX로 Rest API 서버 구성 & Swagger 문서 작성 - 1
깃헙 레포: https://github.com/Comparelt/comparelt-api
대학교 팀 프로젝트에서 크롤링 웹서비스를 구성하게되었다.
주어진 기간이 길지않아서 백엔드를 구성하는데 많은 시간을 들일 수 없어서 Flask와 PostgreSQL로 빠르게 API 서버를 구축하였다.
대략적으로 API 서버 기능을 명세하면 다음과 같다.
프론트엔드를 구성하는 팀에게 알려주기 위해 Swagger를 사용하여 API별 용도와 필수 파라미터, 입력 예시에 대해 문서화를 하기로 하였다. Flask-RESTX를 사용하면 Swagger와 flask-rest를 둘 다 사용할 수 있어 효율적으로 보였다.
API 서버를 구성하기 전에 Flask와 PostgreSQL를 연동할 필요가 있었다. flask_sqlalchemy와 config.ini를 통해 PostgreSQL을 연동하였다.
Flask 서버를 시작하면, 다음과 같이 정상적으로 연동된 것을 볼 수 있다.
만약 다음과 같이 psycopg2가 없다고 ModuleNotFoundError: No module named 'psycopg2'고 뜨면, psycopg2를 설치해주면 된다.
MacOS에서 psycopg2 설치에러가 발생하는 이슈에 대한 해결 방법은 해당 포스트에 정리해놓았다.
API 설계 및 구현은 다음 포스트에 이어서 하겠다.
'개발 > Flask' 카테고리의 다른 글