日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
從頭完成一個(gè)RestfulAPI服務(wù)

今天一起來通過 Flask 快速完成并部署一個(gè) Restuful 服務(wù),不要輕易走開哦!

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名與空間、虛擬主機(jī)、營銷軟件、網(wǎng)站建設(shè)、樂至網(wǎng)站維護(hù)、網(wǎng)站推廣。

一、框架概要

先來看看大致的代碼框架。

這里說明下,這套代碼結(jié)構(gòu)是參照經(jīng)典flask書籍《Flask Web Development》來寫的,想要這本書電子版的,可以聯(lián)系我哈。

二、代碼詳解

1,依賴包

放到了requirements文件里。

flask==1.0.2
flask-script==2.0.6
flask-restful==0.3.7
flask-sqlalchemy==2.3.3
flask-httpauth==3.2.4
itsdangerous==1.1.0
Flask-SQLAlchemy==2.3.2
psycopg2==2.7.6.1

2,配置文件

在config.py文件里。

import os


basedir = os.path.abspath(os.path.dirname(__file__))


class Config:

@staticmethod
def init_app(app):
pass
class DevelopmentConfig(Config):
pass
class TestingConfig(Config):
TESTING = True
SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'my.sqlite3')


class ProductionConfig(Config):
SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL')


config = {
'development': DevelopmentConfig,
'testing': TestingConfig,
'production': ProductionConfig,
'default': DevelopmentConfig
}

這里我使用了簡單易用的 sqlite 數(shù)據(jù)庫,當(dāng)然也可以使用其他關(guān)系型數(shù)據(jù)庫,比如 MySQL 等。

3,程序入口文件

manage.py

from app import create_app, db
from flask_script import Manager, Shell, Server
from app.models import User, AdminUser, Picture


app = create_app('testing')
manager = Manager(app)


def make_shell_context():
return dict(app=app, db=db, User=User, AdminUser=AdminUser, Picture=Picture)


manager.add_command("runserver", Server(use_debugger=True, host='0.0.0.0', port='9980'))
manager.add_command("shell", Shell(make_context=make_shell_context))


if __name__ == '__main__':
manager.run(default_command='runserver')

引入了 flask 的 command 用法,主要用來做數(shù)據(jù)庫的初始化操作和快速啟動 flask 服務(wù)。

4,引入藍(lán)圖

藍(lán)圖可以幫我們實(shí)現(xiàn)模塊化應(yīng)用的功能。

在主程序的__init__.py文件中創(chuàng)建 flask app 并注冊模塊。

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from config import config

db = SQLAlchemy()


def create_app(config_name):
app = Flask(__name__)
app.config.from_object(config[config_name])
config[config_name].init_app(app)
db.init_app(app)

from .main import main as main_blueprint
app.register_blueprint(main_blueprint)
from .api_1_0 import api_1_0 as api_blueprint
app.register_blueprint(api_blueprint)

return app

同時(shí)在 api 模塊的__init__.py里引入藍(lán)圖。

from flask import Blueprint

api_1_0 = Blueprint('api_1_0', __name__, url_prefix='/api')
from . import api_user, api_auth

5,表模型

在models.py文件里,定義了當(dāng)前用到的數(shù)據(jù)庫表結(jié)構(gòu)。

from . import db
from werkzeug.security import generate_password_hash, check_password_hash

class AdminUser(db.Model):
__tablename__ = 'adminuser'
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(128), unique=True, index=True)
password_hash = db.Column(db.Stringhttp://m.5511xx.com/article/codhihc.html