什么是API?
- 前后端工作的一个完整的工作流,是前端发送HTTP请求,后端接受,完整请求任务(查找信息、调用ai等),并返回请求值。由于一个应用功能很多,故给后端上需要分而治之,即每个功能定义一个api,实现:
- 接收
- 调用对应脚本(通常是许多函数,链接到对应脚本)
- 返回
- 这个过程中,前端通过api定义的格式来发送请求到对应功能的api,并按照api定义的格式返回数据
如何搭建API?
- 自己从零开始写是不可能的,涉及许多HTTP等网络相关的繁琐工作,故需要API框架。这些API框架帮你完成了诸如通信、交互等繁琐的任务,你只需要专注于功能的实现即可。
- 常用的api框架有fastapi、flask、nodejs等,由于我对python比较熟悉,这里以fastapi为例。
|
|
- 以上是FASTAPI官方例程,这里做简单语法解释:
@app.get("/")@是python的装饰器,我将其理解为api的标志get:fastapi的方法,表示查看数据的动作(不更改数据),除此之外还有post(创建)、put(修改)、delect(删除)"/":路径。我觉得这是最抽象的一点。这个路径和你开发时app的目录结构没有任何关系,它代表的是你的功能模块之间的结构和路径,表示你要对哪个功能进行操作。举个例子,我想实现一个集查询信息和论坛功能一体的应用:
- 有关竞赛的功能:放在competitions目录下;有关论坛的,放在forum目录下,功能结构非常清晰
- 总得来说,get等动作命令和路径化的功能信息明确指出了“要对哪个功能进行什么操作”。
- 下面的就是通过不同函数的调用实现功能并返回值了。
如何阅读API文档?(以FASTAPI为例)
部署代码到服务器上
推送到github
生成requirements.txt
- 使用
pipreqs包,检测项目中用到的所有库和版本,并写入requirements.txt
pip install pipreqs pipreqs . –force
.: 当前目录(终端打开的目录)下所有文件的依赖库--force: 强制覆盖,即使已存在requirements文件
内网穿透
- 使用cpolar
uvicorn app.main:app --host 0.0.0.0 --port 8080开启你的后端- 下载、注册cpolar
- 在“验证”中找到你的Authtoken
- 在cmd上运行
cpolar authtoken <你的TOKEN内容>,将你的token添加到你的环境变量中 - cmd上
cpolar http 8080- 输出一个http开头的随机域名,对应localhost。
- 访问api:直接在该随机域名后添加api路径
- FASTAPI文档:直接在该随机域名后添加/docs
- 免费模式,每次重启后端域名都会随机生成,下次开启后端后要重复步骤4,获取新域名。