上一篇已经完成了词频统计的程序,现在要提供API供调用。有多个web框架可供选择,比如:Django,一个功能丰富的重量级框架(MVT or MVC),连ORM都有。Django能实现web开发的整个技术栈。但就开发一个接口来说有点杀鸡用牛刀。后来查FastAPI。名字都都带API那肯定是适合做接口了。特点有:快速、高效、简单。
开始,开发工具还是基于vscode
1、安装库:
pip install fastapi
pip install uvicorn
pip install python-multipart
uvicorn暂时理解为服务器
2、创建main.py
import uvicorn as uvicorn
from fastapi import FastAPI
# word是之前实现的词频统计
import word
app = FastAPI() # 必须实例化该类,启动的时候调用
# 请求根目录
@app.get('/')
def index():
return {'message': '欢迎来到FastApi 服务!查看接口说明请访问/docs'}
# 词频统计,传入字符串
@app.post('/wordcloud')
def wordcloud(string_data):
return word.wordcloud(string_data)
if __name__ == '__main__':
uvicorn.run(app=app, host="127.0.0.1", port=11341)
3、点击调试,创建launch.json文件。默认创建的运行配置文件,没有端口号。默认是8000,我们修改一下。在启动参数上添加--port 参数,指定一下端口号
运行配置文件是在项目文件夹.vscode目录下,自己创建一个launch.json都可以
launch.json参考配置如下:
其中args中,main是文件名,app是app = FastAPI()
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: FastAPI",
"type": "python",
"request": "launch",
"module": "uvicorn",
"args": [
"main:app",
"--port",
"11341"
],
"jinja": true
}
]
}
点运行,最终控制台显示启动成功
浏览器打开上面的地址。
FastAPI是可以生成接口文档。访问:/docs或/redoc可以看到接口文档说明
可以对接口进行调用,看着眼熟,看标题,是Swagger UI
最终,我们在百度百科上拷了一段Nginx的介绍,作为参数,调用接口。返回了词频
问题:
1、有些特殊符号是需要清洗掉的
2、大小写现在是作为2个不同的词来统计的,需要对数据进行预处理。
3、现在停用词不全,需要完善
这是在开发环境下,如果部署到生成环境,除了安装对应的库之外。运行命令:
uvicorn main:app --port 11341 --reload
和在vscode终端显示的一样,本来终端也是调用的类似的命令