ASP.NET Core 集成
快速开始
5 行代码起一个 REST API 服务:
using Aneiang.Pa.AspNetCore;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddPa(opt => opt.DefaultCacheDuration = TimeSpan.FromMinutes(5));
var app = builder.Build();
app.MapPaApi();
app.Run();
自动暴露的端点
| 端点 | 说明 |
|---|---|
GET /api/pa/sources | 列出所有 source |
GET /api/pa/source/{name}?noCache=1 | 抓取数据 |
GET /api/pa/health | 健康检查 |
示例请求
# 列出所有数据源
curl https://localhost:5001/api/pa/sources
# 抓取微博热搜
curl https://localhost:5001/api/pa/source/WeiBo
# 跳过缓存
curl https://localhost:5001/api/pa/source/WeiBo?noCache=1
# 健康检查
curl https://localhost:5001/api/pa/health
示例响应
{
"source": "WeiBo",
"data": [
{ "title": "热搜话题1", "url": "..." },
{ "title": "热搜话题2", "url": "..." }
],
"elapsed": "00:00:00.842",
"fromCache": false,
"count": 50
}
配置选项
builder.Services.AddPa(opt =>
{
opt.DefaultCacheDuration = TimeSpan.FromMinutes(5);
opt.EnableMetrics = true;
opt.EnableTracing = true;
opt.DefaultTimeout = TimeSpan.FromSeconds(30);
opt.RetryCount = 3;
});
加载外部 Recipe
builder.Services.AddPa(opt =>
{
opt.RecipesFolder = "./recipes";
});
Docker 部署
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
WORKDIR /app
COPY . .
EXPOSE 8080
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY . .
RUN dotnet publish -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=build /app/publish .
ENTRYPOINT ["dotnet", "MyApp.dll"]
docker build -t aneiang-pa-api .
docker run -p 8080:8080 aneiang-pa-api
打包成 Docker 镜像,一台服务器就能给你的所有项目提供热榜 API。
使用 Aneiang.Pa.Client 调用
如果你有一个远程的 Pa API 服务,可以用客户端 SDK 调用:
using Aneiang.Pa.Client;
var client = new PaClient("https://my-pa-server.com");
// 列出所有源
var sources = await client.GetSourcesAsync();
// 抓取数据
var data = await client.GetAsync("WeiBo");
// 跳过缓存
var fresh = await client.GetAsync("WeiBo", noCache: true);
示例项目
完整的 ASP.NET Core 集成示例见 samples/03-asp-net-core/。