首页 / 文档 / ASP.NET Core 集成

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/