Python中用什么框架写API比较好?
写一个爬虫项目,需要抓取多个平台的数据以及向多个平台 POST 文章,最终打算打包成 WEB API 以便其他项目调用,使用哪种 Python API 框架编写比较好呢?
目前了解的有 eve,一款基于 Flask 的 API 框架,和 Django REST Framework。感觉 eve 比较轻量化,适合新手,但是 eve 的文档和博客等资料比较少; Django 文档、博客资料挺详细但是感觉又有点重,该如何取舍呢?或者大佬们有什么适合新手的框架推荐吗?
谢谢!
Python中用什么框架写API比较好?
选 drf 没错
FastAPI。这玩意儿现在就是Python里写API的首选,没跑。
它快得离谱,靠的是Pydantic做类型检查和序列化,还有Starlette这个异步框架打底。你只要用Python的类型提示(type hints)来定义数据模型和函数参数,框架自己就能生成JSON Schema、OpenAPI文档,连交互式的API文档(Swagger UI 和 ReDoc)都给你自动弄好,省心到爆。
给你看个最基础的例子,创建一个用户信息的POST接口:
from fastapi import FastAPI
from pydantic import BaseModel
from typing import Optional
# 定义数据模型,用Pydantic,类型提示写清楚就行
class User(BaseModel):
name: str
email: str
age: Optional[int] = None # 可选字段
# 创建FastAPI应用实例
app = FastAPI()
# 用装饰器定义API路由和HTTP方法
@app.post("/users/")
async def create_user(user: User):
"""
创建新用户。
直接接收一个符合User模型的JSON请求体。
"""
# 这里通常是把user数据存到数据库,现在先简单返回
return {"message": "User created", "user_data": user}
# 再写个GET例子
@app.get("/")
async def read_root():
return {"Hello": "World"}
@app.get("/users/{user_id}")
async def read_user(user_id: int, q: Optional[str] = None):
# 路径参数user_id,查询参数q
return {"user_id": user_id, "query": q}
要跑起来,用命令 uvicorn main:app --reload 就行(假设文件叫main.py)。--reload参数让你改代码后自动重启,开发时巨方便。
自动生成的文档你访问 /docs 或 /redoc 就能看到,所有接口、参数、模型清清楚楚,还能直接在上面测试调用。
总结:要现代、要快、要省事,直接用FastAPI。
sanic
博客 django 写的。。文档很全才能上手快啊。
Bottle <https://bottlepy.org/docs/dev/>
Flask
Flask
个人觉得爬虫的话 Flask 比较适合吧,轻巧灵活一些,如果是大型的 Web 开发 推荐使用 django
为什么我近期觉得 python 部署很难啊,哭,php 那是真简单
flask+1
flask
PHP 做 API 调 Python 脚本不就行了
适合的语言做适合的事情
flask
flask
把 django 改造成 mvc 形式的 然后做了 restful🤦♂️
flask_restful
了解一下
https://flask-restful.readthedocs.io/en/latest/
挺简单
vibora
https://github.com/encode/apistar
不比 flask 更好?
可以使用下 flask 的扩展 flask_restful
上手挺快的
我们之前用 cherrypy 写的…
Django REST framework
DRF +1
只是单纯写 api 的话考虑重不重干嘛, dj+drf 一把梭,早点下班不好吗
考虑这个问题的人,我一律建议先从最重的开始.
就 drf.
用简洁的东西,并不会节省你的时间,可能还会有反效果,被莫名其妙的问题卡半天,何必呢.
falcon with pypy
Starletee
打错了,应该是 Starlette
hug
直接用 PHP 调用 Python 脚本好了,如果用什么跨语言的 RPC,反倒是有性能损失
如果使用 flask 你说不定还会遇到主线程的问题,遇到再说吧
flask,不过 Django 的文档写的真香啊
前提:新手。新手的特点就是对任何问题都不熟,很有可能被一个很初级的问题莫名其妙卡住。
而设计简洁和使用简单完全是两码事。。。
使用简单适合新手。设计简洁。。。新手怎么评估和享受设计?
新手还是 Django 吧,如果有性能要求 弄 tornado 或者放弃 py 改用 go
django 吧,资料全功能全,
看着轻量反而正式用的时候比重的还麻烦
Flask
tornado 了解一下 我司接口全是 tornado
https://github.com/kennethreitz/responder 新出炉的螃蟹 要不要试试
我用 aiohttp 写过
没人推荐 tornado 吗? flask 这么流行了?
以我的实践经验来看,如果为了省时省事不太考滤性能那么最便捷的方案是
django+
djangorestframework+
scrapy+
scrapy-djangoitem
文档丰富教程多
tornado

