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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

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

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

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

0x00 技術棧

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

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

因此整個技術棧為

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

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

0x01 項目設計

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

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

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

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

根據這些功能模塊,我們對項目中的實體進行抽象主要有

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

這些實體在數據庫建模中分別對應各自的表。避免代碼篇幅太長,這里就不再貼出各表腳本代碼。關于sql表結構會在后面的項目地址中給出。

0x02 數據庫

我這里使用的是騰訊云的數據庫,當然使用本地的數據庫也是可以的。

各表的字段如下圖

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

0x03 項目框架搭建

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

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

注意到我已經把數據庫腳本文件放在項目根目錄了。
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 復制代碼

可以使用命令

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

生成requirements.tx文件。

使用命令

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

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

0x04 總結

本篇是基于Flask開發(fā)企業(yè)級API應用的第一篇,主要是對項目開發(fā)前期的準備工作,包括項目設計、數據庫設計以及項目結構搭建,當然實際工作中可能還會先出API文檔,讓前端的同學可以先動起來,但我這里因為已經是在寫文檔了,所以API文檔就省略了。磨刀不誤砍柴工,這些工作都是必需的。

0x05 項目地址

github.com/hylinux1024…

0x06 學習資料

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

轉載于:https://juejin.im/post/5d3bc3d25188254cbc32b1cc

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

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。