日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于Flask开发企业级REST API应用(一)

發(fā)布時間:2023/12/18 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于Flask开发企业级REST API应用(一) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

關(guān)于我
編程界的一名小小程序猿,目前在一個創(chuàng)業(yè)團(tuán)隊(duì)任team lead,技術(shù)棧涉及Android、Python、Java和Go,這個也是我們團(tuán)隊(duì)的主要技術(shù)棧。
Github:github.com/hylinux1024
微信公眾號:angrycode

前面對Python WEB框架Flask的源碼進(jìn)行走讀,對服務(wù)的啟動流程、路由原理和模板渲染有了一個宏觀的認(rèn)識。不過說了那么多理論,接下來就利用Flask開發(fā)一個企業(yè)級的API應(yīng)用。

我選用團(tuán)隊(duì)最近開發(fā)的一個企業(yè)應(yīng)用作為案例。這是一個戀愛交友應(yīng)用,本來是使用Java的SpringBoot框架進(jìn)行開發(fā)的,不過為了避免不必要的麻煩,我會使用Flask進(jìn)行改造,當(dāng)然這個案例我還會精簡一下,保持核心業(yè)務(wù)的同時,重點(diǎn)關(guān)注其中涉及到的技術(shù)和工具庫的使用,最大限度的還原項(xiàng)目開發(fā)的完整流程。

0x00 技術(shù)棧

這里我們使用Python版本為3.7,WEB框架當(dāng)然就是Flask,數(shù)據(jù)庫使用MySql,ORM使用SqlAlchemy,使用Redis作為緩存,可能還會使用到序列化工具庫marshmallow。

開發(fā)環(huán)境使用venv,部署服務(wù)環(huán)境會使用nginx+gunicorn+supervisord

因此整個技術(shù)棧為

# 開發(fā)技術(shù)棧 Python3.7+venv+Flask+MySql+SqlAlchemy+Redis+marshmallow # 部署技術(shù)棧 Python3.7+venv+nginx+gunicorn+supervisord 復(fù)制代碼

當(dāng)然企業(yè)實(shí)際開發(fā)中還需要編寫接口文檔,用于各端同學(xué)的交互。我們可以使用postman或者淘寶的API文檔服務(wù)。

0x01 項(xiàng)目設(shè)計(jì)

技術(shù)選型做好之后,先不急于寫代碼,而是先把項(xiàng)目前期的設(shè)計(jì)做好,根據(jù)業(yè)務(wù)需求理清功能模塊、數(shù)據(jù)庫表結(jié)構(gòu)、接口文檔等。

我們的需求是做一個戀愛交友的應(yīng)用,那么它主要功能模塊就應(yīng)該有

  • 登錄注冊
    這里使用用戶手機(jī)號進(jìn)行登錄注冊
  • 用戶列表
    用戶登錄后,可以查看當(dāng)前熱門推薦的用戶
  • 聯(lián)系人列表
    聯(lián)系過的用戶,會出現(xiàn)在聯(lián)系人列表中
  • 聊天模塊
    給用戶發(fā)送消息,消息類型包括文本、語音等
  • 附近的人
    根據(jù)用戶登錄的地理位置,查看附近的人
  • 誰看過我
    查看誰看過我,這個可以作為VIP功能
  • 個人信息
    包括用戶基本信息、用戶相冊和用戶標(biāo)簽等
  • VIP模塊
    當(dāng)用戶充值為VIP后可以解鎖一些功能,比如查看誰看過我的列表

注意為了避免項(xiàng)目開發(fā)周期過長我們主要關(guān)注前臺api的開發(fā),對于后臺管理功能暫時不考慮。

根據(jù)這些功能模塊,我們對項(xiàng)目中的實(shí)體進(jìn)行抽象主要有

  • 登錄授權(quán)user_auth
  • 用戶基本信息user_info
  • 用戶位置location
  • 用戶相冊user_album
  • 用戶標(biāo)簽user_label
  • 標(biāo)簽label
  • 聯(lián)系人contacts
  • 消息message
  • 訪問足跡visitor
  • 充值VIP的商品product
    有月度VIP、季度VIP和年度VIP三種
  • 訂單user_order
  • 用戶VIP信息vip_info

這些實(shí)體在數(shù)據(jù)庫建模中分別對應(yīng)各自的表。避免代碼篇幅太長,這里就不再貼出各表腳本代碼。關(guān)于sql表結(jié)構(gòu)會在后面的項(xiàng)目地址中給出。

0x02 數(shù)據(jù)庫

我這里使用的是騰訊云的數(shù)據(jù)庫,當(dāng)然使用本地的數(shù)據(jù)庫也是可以的。

各表的字段如下圖

注意這些表我都沒有加外鍵約束。

0x03 項(xiàng)目框架搭建

我使用PyCharm作為開發(fā)環(huán)境的IDE,創(chuàng)建了一個名為DatingToday項(xiàng)目,結(jié)構(gòu)如下

(venv) ? DatingToday tree -L 1 . ├── app.py ├── datingtoday.sql ├── requirements.txt ├── static ├── templates └── venv 復(fù)制代碼

注意到我已經(jīng)把數(shù)據(jù)庫腳本文件放在項(xiàng)目根目錄了。
venv環(huán)境安裝了以下依賴庫

(venv) ? DatingToday pip list Package Version ---------------------- ------- Click 7.0 Flask 1.1.1 flask-marshmallow 0.10.1 Flask-SQLAlchemy 2.4.0 itsdangerous 1.1.0 Jinja2 2.10.1 MarkupSafe 1.1.1 marshmallow 2.19.5 marshmallow-sqlalchemy 0.17.0 pip 10.0.1 setuptools 39.1.0 six 1.12.0 SQLAlchemy 1.3.6 Werkzeug 0.15.5 復(fù)制代碼

可以使用命令

(venv) ? pip freeze > requirements.txt 復(fù)制代碼

生成requirements.tx文件。

使用命令

(venv) ? pip install -r requirements.txt 復(fù)制代碼

還原虛擬環(huán)境中的依賴。

0x04 總結(jié)

本篇是基于Flask開發(fā)企業(yè)級API應(yīng)用的第一篇,主要是對項(xiàng)目開發(fā)前期的準(zhǔn)備工作,包括項(xiàng)目設(shè)計(jì)、數(shù)據(jù)庫設(shè)計(jì)以及項(xiàng)目結(jié)構(gòu)搭建,當(dāng)然實(shí)際工作中可能還會先出API文檔,讓前端的同學(xué)可以先動起來,但我這里因?yàn)橐呀?jīng)是在寫文檔了,所以API文檔就省略了。磨刀不誤砍柴工,這些工作都是必需的。

0x05 項(xiàng)目地址

github.com/hylinux1024…

0x06 學(xué)習(xí)資料

  • palletsprojects.com/p/flask/
  • realpython.com/flask-conne…

轉(zhuǎn)載于:https://juejin.im/post/5d3bc3d25188254cbc32b1cc

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的基于Flask开发企业级REST API应用(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。