# API 文档 对外 HTTP API,供小程序 / 第三方平台接入。Base URL:`https://your-domain.com/api` - **交互式文档**(OpenAPI/Swagger 风格,Scramble 自动生成):`GET /docs/api` - **OpenAPI JSON**:`GET /docs/api.json` - 认证:Bearer Token(Laravel Sanctum),仅 `/api/me` 需要 ## 认证(可选) ```bash # 生成 API Token php artisan tinker --execute='$u = App\Models\User::where("email","you@example.com")->first(); dump($u->createToken("mini-program")->plainTextToken);' ``` 请求头:`Authorization: Bearer ` ## 端点总览 | 方法 | 路径 | 说明 | 认证 | |------|------|------|------| | GET | `/api/site` | 站点信息 | 否 | | GET | `/api/posts` | 文章列表(分页/筛选/搜索) | 否 | | GET | `/api/posts/{slug}` | 文章详情(含渲染后 HTML) | 否 | | GET | `/api/categories` | 分类列表 | 否 | | GET | `/api/tags` | 标签列表(含文章数) | 否 | | POST | `/api/comments` | 提交评论 | 否 | | GET | `/api/me` | 当前用户 | 是 | ## 示例 ### 站点信息 ```bash curl http://laralog.test/api/site ``` ```json {"name":"旧博客的名字","description":"老博客描述","icp":"京ICP备12345678号","url":"http://laralog.test","rss":"http://laralog.test/rss.xml","api_version":"1.0"} ``` ### 文章列表 ```bash curl "http://laralog.test/api/posts?page=1&per_page=10&category=tech&tag=laravel&q=关键词" ``` ```json { "data": [ { "id": 1, "title": "你好,世界", "slug": "post-1", "excerpt": "第一篇博客文章", "category": "生活随笔", "tags": ["随笔"], "views": 100, "comment_count": 2, "published_at": "2020-09-13T12:26:40+00:00", "url": "http://laralog.test/posts/post-1.shtml" } ], "meta": { "current_page": 1, "last_page": 1, "per_page": 10, "total": 1 } } ``` ### 文章详情 ```bash curl http://laralog.test/api/posts/post-1 ``` 返回 `content_html`(与前台一致:Markdown 渲染 / [attach] 短代码解析 / 付费内容过滤)。 ### 提交评论 ```bash curl -X POST http://laralog.test/api/comments \ -H "Content-Type: application/json" \ -d '{"post_id":1,"author_name":"访客","content":"写得很好","website":""}' ``` - `website` 为蜜罐字段,必须留空 - 评论审核开关(comment_audit)开启时返回 `pending`,关闭直接发布 ### 小程序接入建议 - 启动时请求 `/api/site` + `/api/posts` 缓存首页 - 文章详情拉取 `content_html` 直接渲染(富文本/图片已含 S3 URL) - 评论提交带 `post_id`;如需"我的评论/会员"能力,用 Bearer Token 调 `/api/me`(可扩展)