使用FastAPI快速搭建远程API接口
本文面向需要自行搭建API接口服务器读者,过程操作比较简单
使用SpringBoot 等框架用户可以考虑是否忽略,
引子
需要做API接口有很多原因
- 前端开发使用api接口,依赖后端,假数据使用Mock或者本地json之类,不够灵活
- 自己Demo或者程序,需要提供接口调用
- 等
原则上,部署完毕,后期可以做很接口开发,主要为APP提供接口使用,
至于安全和负载是后期的事情了,本文连日志和数据库都没来得及加....
另:自己搭建API服务器,成本和步骤是复杂度可以自行对比商业云服务后台
效果
浏览器/PostMan 可以请求到服务器部署的 get返回结果 ,后续业务处理未完待续
是的,就是这么简单的需求
准备材料
-
服务器 [白P的甲骨文主机],具体步骤请自行搜索 关键字 "甲骨文"“免费服务器”
注:免费服务器申请有失败概率,如没有成功,可以考虑其他平台云服务器
-
SSH 工具,示例使用Xshell
步骤
-
申请 服务器,创建示例,上传SSH密钥 打开端口 8080 ,
建议创建Ubuntu主机,我选CentOS ,结果遇到很多问题,
需要自行安装很多依赖,pip iptable等,后期部署完毕,发现8080端口没开
-
SSH连接到,目标主机,
如果使用Oracle主机,ubuntu默认密码是ubuntu ,CentOS默认密码opc
开始安装
$ pip install uvicorn $ pip install uvicorn
安装完毕,按照Demo示例,写个main.py
from fastapi import FastAPI app = FastAPI() @app.get("/") def read_root(): return {"Hello": "FastAPI"}
通过xshell上传到服务器
这里使用xshell直接拖到命令行就可以,如果提示,需要安装 lrzsz
yum install lrzsz
启动 uvicorn服务
uvicorn main:app --host '0.0.0.0' --port 8080 --reload
参数说明
main: 指定主程序文件main.py文件,
如果main.py文件改成test.py 则命令也需要改为uvicorn test:appapp:
在main.py中使用app = FastAPI()创建的对象
--host:远程主机ip,如果是本地则可以不要这个参数
--host:端口号--reload:在修改源代码后程序会自动重新加载不用退出重新启动
运行成功后,会看到日志:
[root@bang-20210926-1658 ~]# uvicorn main:app --host '0.0.0.0' --port 8080 --reload
INFO: Will watch for changes in these directories: ['/root']
INFO: Uvicorn running on [http://0.0.0.0:8080](http://0.0.0.0:8080/) (Press CTRL+C to quit)
INFO: Started reloader process [36821] using statreload
INFO: Started server process [36823]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: 45.117.99.101:3662 - "GET / HTTP/1.1" 200 OK
接下来在浏览器或者使用Postman访问 ,就可以看到返回结果了
http://xxx.xxx.xxx.xxx:8080/
过程中遇到的问题
- centos 缺少各种依赖库,pip iptables,
- 端口未开放
本文参考:[排名部分现后,感谢作者]
1.FastAPI官方
2..FastAPI简单操作
https://www.jianshu.com/p/3d391d022239
3.FastApi环境安装+服务器部署
https://blog.csdn.net/suyancc/article/details/106588589
4.uvicorn|更改fastapi服务器运行host和port
https://blog.csdn.net/qq_31989047/article/details/105838679
5.检测服务器端口是否被封(墙)
https://blog.csdn.net/willingtolove/article/details/104242802
6.Centos查看端口占用情况和开启端口命令
https://cloud.tencent.com/developer/article/1473377
https://www.cnblogs.com/xqzt/p/4919191.html
7.CentOS7出现Unit iptables.service could not be found
https://blog.csdn.net/good_luck_l/article/details/94468915
8.WEB框架对比——Django、Flask、FastAPI
https://www.cnblogs.com/zhuminghui/p/14741536.html
9.Xshell实现Windows上传文件到Linux主机
https://blog.csdn.net/shenjianxz/article/details/56686449
10.Xshell官网下载
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?