跳到内容
当前位置:首页>Excel>FastAPI 学习笔记 01 | 特性、安装与启动,从零跑起第一个接口

FastAPI 学习笔记 01 | 特性、安装与启动,从零跑起第一个接口

  • 2026-11-05 08:29:59
FastAPI 学习笔记 01 | 特性、安装与启动,从零跑起第一个接口

这是「FastAPI 学习笔记」合集的第一篇。整套笔记的目标很明确:不背文档,而是把 FastAPI 从"能跑"到"能上线"的每一步都走一遍。这一篇解决两件事——它凭什么值得学,以及怎么在本地把第一个接口跑起来。

一、先说结论:为什么是 FastAPI

如果你写过 Flask,大概经历过这种循环:接口写好了,参数校验自己写一堆 if not isinstance(x, int);接口改了字段,前端跑来问"到底要传什么";上线前还要手写一份 Swagger 文档,写完就和代码一起过期了。
FastAPI 把这些活儿一次性收走了。它的核心思路只有一句话:

你写一遍 Python 类型注解,框架拿它同时做四件事——参数校验、数据转换、序列化、生成接口文档。

这不是比喻。你在函数签名里写 item_id: int,FastAPI 就真的会:把路径里的字符串转成 int、不是数字就返回结构化的 422 错误、在 /docs 里把 item_id 标注成 integer、并把返回值按声明序列化成 JSON。
一句话概括它的定位:一个基于 Python 标准类型注解的现代 Web 框架,底层用 Starlette 处理 Web,用 Pydantic 处理数据。

二、官方八大特性,翻译成人话

官方首页列了八条,逐条讲一下实际体感,比抄列表有用。
  1. 快(Fast)官方说法是性能与 NodeJS、Go 同级,是 Python 框架里最快的之一。原因不神秘:Starlette 是纯 ASGI 实现,Pydantic v2 的核心校验逻辑用 Rust 写的。需要提醒的是,这个"快"指的是框架自身的开销。你的接口如果卡在一条慢 SQL 上,换什么框架都一样慢。
  2. 写代码快(Fast to code)官方给的数字是开发效率提升 200%~300%,这是他们内部团队做生产项目的估算,别当精确指标看。真实的体感来自"少写胶水代码":一个参数的声明同时完成了校验和文档,你不需要在两个地方维护同一份契约。
  3. 更少的 Bug同样来自官方估算,减少约 40% 的人为错误。可信度打折扣,但方向是对的——类型注解让编辑器在你写完之前就报错,而不是等到线上日志里出现 KeyError。
  4. 智能提示友好(Intuitive)这条是我个人最看重的。因为类型是真的类型(不是装饰器字符串),VS Code / PyCharm 里补全、跳转、重构全部有效。用 response_model 声明返回结构后,连返回值的字段都能补全。
  5. 简单(Easy)没有新的 DSL,没有要背的魔术方法。会写 Python 函数就能写路由。这也是它比 Django 更适合"快速做一个 API 服务"的原因。
  6. 短(Short)尽量减少重复。声明一次参数,校验、文档、转换全部到位——重复越少,改需求时漏改的地方就越少。
  7. 健壮(Robust)开箱即用的生产级能力:自动交互式文档、依赖注入、OAuth2/JWT 支持。新版还在持续补工程能力,比如原生的 OpenTelemetry 可观测性支持。
  8. 基于标准(Standards-based)完全兼容 OpenAPI 和 JSON Schema。这意味着你的接口能被任何标准工具消费:Swagger UI、ReDoc、Postman 导入、前端代码生成器。这是它和很多"自造文档"框架的本质区别——不是生成了一份文档,而是生成了一份机器可读的契约。

三、和 Flask、Django 怎么选

不用纠结,看场景:
维度
Flask
Django
FastAPI
类型校验
无,全靠自己
表单/序列化器
原生,基于注解
异步支持
有限
较新才有
一等公民
自动文档
需插件
需插件
内置 Swagger + ReDoc
学习曲线
低
高(全家桶)
低
一句话选型:做纯 API、要异步、要文档、要给前端或 AI 服务提供接口 → FastAPI;需要开箱即用的后台管理和 ORM 全家桶 → Django;就想跑个小脚本服务 → Flask 也够。
近两年 FastAPI 增长最快的场景其实是 AI 应用后端(模型服务、Agent 工具接口、SSE 流式输出),因为流式响应和异步天然合拍。

四、安装:先确认版本

打开终端,先做两件事。
第一步,确认 Python 版本。
python3 --version
FastAPI 当前版本(0.162.x)要求Python 3.10 及以上,支持到 3.14。如果你的输出是 3.9 或更低,装的时候会直接被拒。macOS 用户建议用 uv 或 pyenv 管理版本,别动系统自带的 Python。
第二步,创建虚拟环境。这一步别省,虚拟环境能让你以后换版本、删环境都不影响系统。
mkdir fastapi-demo && cd fastapi-demopython3 -m venv .venvsource .venv/bin/activateWindows 用 .venv\Scripts\activate
激活成功的标志是命令行前面多了 (.venv)。

方式一:用 uv(推荐,快)

uv 是目前 Python 生态里最快的包管理器,也是 FastAPI 官方文档现在首推的方式。
安装 uv(macOS / Linux)curl -LsSf https://astral.sh/uv/install.sh | sh # 初始化项目并安装uv inituv add ”fastapi[standard]”

方式二:用 pip

pip install ”fastapi[standard]”
国内网络建议加个镜像源,能少等几分钟:
pip install ”fastapi[standard]” -i https://pypi.tuna.tsinghua.edu.cn/simple
这里有个关键细节:为什么是fastapi[standard]而不是fastapi?
裸装 fastapi 只有框架本体,不含服务器和命令行工具。[standard] 这个可选依赖组会额外带上:
uvicorn[standard]
—— 真正跑起来服务的 ASGI 服务器
fastapi-cli
—— 提供 fastapi 命令(fastapi dev / fastapi run)
httpx2
—— 测试客户端 TestClient 用
python-multipart
—— 解析表单和文件上传必需
jinja2
、email-validator、pydantic-settings 等常用件
所以新手直接装fastapi[standard],别装裸的。否则你会遇到"装完了但没有 fastapi 命令"的经典问题。
引号也不能省。[ 在 zsh 里是通配符,不加引号可能被 shell 吃掉。同理,PowerShell 里也建议加引号。
一个小提醒:从近期版本起,standard 组里还包含 fastapi-cloud-cli(用于部署到 FastAPI Cloud)。如果你完全用不到、也不想让它被装进环境,可以换成:
pip install ”fastapi[standard-no-fastapi-cloud-cli]”
功能一样,只是少了那个云部署的 CLI。

五、第一个接口

在项目里新建 main.py:
from fastapi import FastAPIapp = FastAPI()@app.get(”/”)def read_root():    return {”Hello”: ”World”}@app.get(”/items/{item_id}”)def read_item(item_id: int, q: str | None = None):    return {”item_id”: item_id, ”q”: q}
就这十几行,已经包含了一个带路径参数、带可选查询参数、带类型校验、带自动文档的接口。

启动

fastapi dev main.py
用 uv 的话是:
uv run fastapi dev main.py
你会看到类似这样的启动信息:
╭────────── FastAPI CLI - Development mode ───────────╮ │  Serving at: http://127.0.0.1:8000                  │ │  API docs:   http://127.0.0.1:8000/docs             │ │  Running in development mode, for production use:   │ │  fastapi run                                        │ ╰─────────────────────────────────────────────────────╯INFO:     Uvicorn running on http://127.0.0.1:8000INFO:     Started reloader process using WatchFiles
fastapi dev 做三件事:自动找到 main.py 里的 app、用 Uvicorn 起服务、开启热重载。改完代码保存,服务自动重启,不用手动 Ctrl+C 再起。
这里有个容易踩的坑:fastapi dev 默认只监听 127.0.0.1,所以手机或局域网内其他机器访问不到。需要局域网调试时用:
fastapi dev main.py --host 0.0.0.0 --port 8001

验证

浏览器打开 http://127.0.0.1:8000/items/5?q=hello,返回:
{”item_id”: 5, ”q”: ”hello”}
注意返回的 item_id 是数字 5,不是字符串 "5"——路径参数里拿到的原本是字符串,是 FastAPI 按你的注解自动转换的。
再试一下 http://127.0.0.1:8000/items/abc,会得到 HTTP 422:
{  ”detail”: [    {      ”type”: ”int_parsing”,      ”loc”: [”path”, ”item_id”],      ”msg”: ”Input should be a valid integer, unable to parse string as an integer”,      ”input”: ”abc”    }  ]}
这行错误信息是重点。你没有写任何校验代码,但 FastAPI 告诉你:错在 path 的 item_id、错因是无法解析成整数、原始输入是什么。对比一下自己手写校验的 return {"error": "参数错误"},这就是差距。

六、白送的文档

打开 http://127.0.0.1:8000/docs:
这是 Swagger UI。你可以直接在页面上点 "Try it out" 发真实请求,不需要 Postman。所有接口、参数类型、必填与否都列好了——因为你写了类型注解,它才知道。
再看 http://127.0.0.1:8000/redoc,同一份数据的另一种排版,适合当对外文档交给合作方。
还没完,机器读的版本在 http://127.0.0.1:8000/openapi.json。这份 JSON 就是 OpenAPI 规范,前端可以直接拿它生成请求代码,网关可以拿它做校验,测试可以拿它做契约测试。
记住这个关系:类型注解 → OpenAPI schema → Swagger UI / ReDoc / 代码生成。文档不是写出来的,是推导出来的。

七、加一个请求体,感受"声明一次"

把 main.py 改成这样:
from fastapi import FastAPIfrom pydantic import BaseModelapp = FastAPI()class Item(BaseModel):    name: str    price: float    is_offer: bool | None = None@app.get(”/”)def read_root():    return {”Hello”: ”World”}@app.get(”/items/{item_id}”)def read_item(item_id: int, q: str | None = None):    return {”item_id”: item_id, ”q”: q}@app.put(”/items/{item_id}”)def update_item(item_id: int, item: Item):    return {”item_name”: item.name, ”item_id”: item_id}
因为开了热重载,保存后服务已经自动重启。回到 /docs,你会发现多了一个 PUT /items/{item_id},而且请求体的结构已经自动画出来了:name 是 string、price 是 number、is_offer 是 boolean 且可选。
直接用 curl 试一下(在 JSON 里 price 传字符串 "9.99"):
curl -X PUT ”http://127.0.0.1:8000/items/1” \  -H ”Content-Type: application/json” \  -d '{”name”: ”键盘”, ”price”: ”9.99”}'
返回:
{”item_name”: ”键盘”, ”item_id”: 1}
字符串"9.99"被自动转成了 float。这不是巧合,是 Pydantic 的宽松模式在做类型转换。而如果你传 {"name": "键盘"}(缺 price),会立刻收到 422,提示 price: Field required。

八、几个新手必踩的坑

提前避掉,能省一晚上。
1.fastapi: command not found装的是裸 fastapi,没带 [standard],所以没有 CLI。补一句 pip install "fastapi[standard]"。临时救急也可以直接用 uvicorn:
python -m uvicorn main:app --reload
2. 端口被占用报 Address already in use,换端口:fastapi dev main.py --port 8001。想找出谁占着 8000,lsof -i :8000。
3. 文件上传或表单报错提示 python-multipart must be installed。这就是裸装的后遗症,装 [standard] 即可,或单独 pip install python-multipart。
4. Python 版本太低pip 报 No matching distribution found,先看 python3 --version。低于 3.10 就要升级了。
5. 改了代码不生效先确认你起的是 fastapi dev(带重载),而不是 fastapi run(生产模式,不带重载)。
6.fastapi dev和fastapi run的区别dev 面向本地:127.0.0.1 + 热重载 + 彩色提示。run 面向生产:默认 0.0.0.0、不重载、性能更好。别拿dev上生产。真正的线上部署通常还要套一层 Nginx 或容器编排,这个后面单独写一篇。

九、本篇小结

FastAPI = Starlette(Web)+ Pydantic(数据),核心是用一遍类型注解,换四处收益:校验、转换、序列化、文档。
装 fastapi[standard],不要装裸 fastapi;引号不能省;Python 要 3.10+。
fastapi dev main.py
起开发服务,默认 127.0.0.1:8000,自带热重载。
/docs
是 Swagger UI,/redoc 是 ReDoc,/openapi.json 是给机器读的契约。
类型写错或没写,最直接的后果就是 422 和文档缺失——在 FastAPI 里,类型不是注释,是契约。
下一篇预告:把路由拆开,讲 APIRouter、路径/查询/请求体参数的完整用法,以及返回值和状态码怎么控制。这一篇里的 main.py 会正式长成一个有目录结构的项目。

如果这篇笔记对你有帮助,欢迎点赞、在看、转发给正在选框架的朋友。有问题可以留言,我会在下一篇里一起回答。
基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-11-07 05:43:49 HTTP/1.1 GET : http://h.sjds.net/a/573142.html
  2. 运行时间 : 0.078078s [ 吞吐率:12.81req/s ] 内存消耗:4,372.93kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=7a3df9de18fa3d86e27c3c984373fdc9
  1. /www/wwwroot/h.sjds.net/public/index.php ( 0.79 KB )
  2. /www/wwwroot/h.sjds.net/vendor/autoload.php ( 0.17 KB )
  3. /www/wwwroot/h.sjds.net/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /www/wwwroot/h.sjds.net/vendor/composer/platform_check.php ( 0.90 KB )
  5. /www/wwwroot/h.sjds.net/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /www/wwwroot/h.sjds.net/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /www/wwwroot/h.sjds.net/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /www/wwwroot/h.sjds.net/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /www/wwwroot/h.sjds.net/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /www/wwwroot/h.sjds.net/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /www/wwwroot/h.sjds.net/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /www/wwwroot/h.sjds.net/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /www/wwwroot/h.sjds.net/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /www/wwwroot/h.sjds.net/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /www/wwwroot/h.sjds.net/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /www/wwwroot/h.sjds.net/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /www/wwwroot/h.sjds.net/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /www/wwwroot/h.sjds.net/app/provider.php ( 0.19 KB )
  23. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /www/wwwroot/h.sjds.net/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /www/wwwroot/h.sjds.net/app/common.php ( 0.03 KB )
  27. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /www/wwwroot/h.sjds.net/config/app.php ( 0.95 KB )
  30. /www/wwwroot/h.sjds.net/config/cache.php ( 0.78 KB )
  31. /www/wwwroot/h.sjds.net/config/console.php ( 0.23 KB )
  32. /www/wwwroot/h.sjds.net/config/cookie.php ( 0.56 KB )
  33. /www/wwwroot/h.sjds.net/config/database.php ( 2.48 KB )
  34. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /www/wwwroot/h.sjds.net/config/filesystem.php ( 0.61 KB )
  36. /www/wwwroot/h.sjds.net/config/lang.php ( 0.91 KB )
  37. /www/wwwroot/h.sjds.net/config/log.php ( 1.35 KB )
  38. /www/wwwroot/h.sjds.net/config/middleware.php ( 0.19 KB )
  39. /www/wwwroot/h.sjds.net/config/route.php ( 1.89 KB )
  40. /www/wwwroot/h.sjds.net/config/session.php ( 0.57 KB )
  41. /www/wwwroot/h.sjds.net/config/trace.php ( 0.34 KB )
  42. /www/wwwroot/h.sjds.net/config/view.php ( 0.82 KB )
  43. /www/wwwroot/h.sjds.net/app/event.php ( 0.25 KB )
  44. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /www/wwwroot/h.sjds.net/app/service.php ( 0.13 KB )
  46. /www/wwwroot/h.sjds.net/app/AppService.php ( 0.26 KB )
  47. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /www/wwwroot/h.sjds.net/vendor/services.php ( 0.14 KB )
  53. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /www/wwwroot/h.sjds.net/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /www/wwwroot/h.sjds.net/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /www/wwwroot/h.sjds.net/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /www/wwwroot/h.sjds.net/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /www/wwwroot/h.sjds.net/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /www/wwwroot/h.sjds.net/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /www/wwwroot/h.sjds.net/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /www/wwwroot/h.sjds.net/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /www/wwwroot/h.sjds.net/app/Request.php ( 0.09 KB )
  84. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /www/wwwroot/h.sjds.net/app/middleware.php ( 0.25 KB )
  86. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /www/wwwroot/h.sjds.net/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /www/wwwroot/h.sjds.net/route/app.php ( 1.72 KB )
  100. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /www/wwwroot/h.sjds.net/app/controller/Index.php ( 4.81 KB )
  104. /www/wwwroot/h.sjds.net/app/BaseController.php ( 2.05 KB )
  105. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /www/wwwroot/h.sjds.net/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /www/wwwroot/h.sjds.net/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /www/wwwroot/h.sjds.net/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /www/wwwroot/h.sjds.net/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /www/wwwroot/h.sjds.net/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /www/wwwroot/h.sjds.net/runtime/temp/c1d6e8c94b2c2fa10e259903674c804d.php ( 8.11 KB )
  140. /www/wwwroot/h.sjds.net/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000756s ] mysql:host=172.18.0.4;port=3306;dbname=h_sjds;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001048s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000458s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000389s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000705s ]
  6. SELECT * FROM `set` [ RunTime:0.000283s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000644s ]
  8. SELECT * FROM `article` WHERE `id` = 573142 LIMIT 1 [ RunTime:0.000369s ]
  9. UPDATE `article` SET `lasttime` = 1794001429 WHERE `id` = 573142 [ RunTime:0.001759s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 65 LIMIT 1 [ RunTime:0.000311s ]
  11. SELECT * FROM `article` WHERE `id` < 573142 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000426s ]
  12. SELECT * FROM `article` WHERE `id` > 573142 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000370s ]
  13. SELECT * FROM `article` WHERE `id` < 573142 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000658s ]
  14. SELECT * FROM `article` WHERE `id` < 573142 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000620s ]
  15. SELECT * FROM `article` WHERE `id` < 573142 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.000537s ]
0.088309s