使用FastAPI快速搭建远程API接口

本文面向需要自行搭建API接口服务器读者,过程操作比较简单

使用SpringBoot 等框架用户可以考虑是否忽略,

引子

需要做API接口有很多原因

  • 前端开发使用api接口,依赖后端,假数据使用Mock或者本地json之类,不够灵活
  • 自己Demo或者程序,需要提供接口调用

原则上,部署完毕,后期可以做很接口开发,主要为APP提供接口使用,

至于安全和负载是后期的事情了,本文连日志和数据库都没来得及加....

另:自己搭建API服务器,成本和步骤是复杂度可以自行对比商业云服务后台

效果

浏览器/PostMan 可以请求到服务器部署的 get返回结果 ,后续业务处理未完待续

是的,就是这么简单的需求

准备材料

  1. 服务器 [白P的甲骨文主机],具体步骤请自行搜索 关键字 "甲骨文"“免费服务器”

    注:免费服务器申请有失败概率,如没有成功,可以考虑其他平台云服务器

  2. 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官方

https://www.uvicorn.org/

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官网下载

https://www.netsarang.com/en/xshell/

posted @   wang_xiaohao  阅读(5949)  评论(2编辑  收藏  举报
编辑推荐:
· 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,谁才是开发者新宠?
点击右上角即可分享
微信分享提示