You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ASP.NET Core Web API中调用第三方REST API?(接口未显示在Swagger)

.NET Core Web API 调用第三方REST API 最简实现方案

一、先解决Swagger不显示控制器的问题

  • 给控制器添加必要特性:确保ThirdPartyAPIController类上标注[ApiController]和路由特性,示例:
[ApiController]
[Route("api/[controller]")]
public class ThirdPartyAPIController : ControllerBase
{
    // 接口方法写在这里
}
  • 给控制器方法添加HTTP动词特性:比如[HttpGet]、[HttpPost],Swagger只会识别带这些特性的方法,示例:
[HttpGet("products")]
public async Task<IActionResult> GetThirdPartyProducts()
{
    // 逻辑代码
}
  • 检查Program.cs的Swagger配置:确保已启用Swagger服务和中间件,示例核心代码:
var builder = WebApplication.CreateBuilder(args);

// 添加控制器服务
builder.Services.AddControllers();

// 注册Swagger服务
builder.Services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new() { Title = "你的API名称", Version = "v1" });
});

var app = builder.Build();

// 开发环境启用Swagger UI
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "你的API名称 v1"));
}

app.MapControllers();
app.Run();

二、调用第三方API的核心实现

1. 注册HttpClient

在Program.cs中添加HttpClient的依赖注入(官方推荐,避免手动创建的资源泄漏问题):

builder.Services.AddHttpClient();

2. 控制器中注入并调用第三方API

在ThirdPartyAPIController中注入HttpClient,编写调用逻辑:

private readonly HttpClient _httpClient;

// 构造函数注入HttpClient
public ThirdPartyAPIController(HttpClient httpClient)
{
    _httpClient = httpClient;
}

[HttpGet("products")]
public async Task<IActionResult> GetProducts()
{
    try
    {
        // 替换为你Postman测试通过的第三方API地址
        var thirdPartyApiUrl = "https://第三方API域名/products";
        
        // 自动反序列化为Product模型列表
        var products = await _httpClient.GetFromJsonAsync<List<Product>>(thirdPartyApiUrl);
        
        return products == null ? NotFound() : Ok(products);
    }
    catch (HttpRequestException ex)
    {
        // 简单错误处理,可根据实际需求调整
        return StatusCode(StatusCodes.Status503ServiceUnavailable, $"第三方API调用失败: {ex.Message}");
    }
}

3. 匹配第三方API的Product模型

根据第三方API返回的JSON结构,定义对应的模型类,示例:

public class Product
{
    public int Id { get; set; }
    public string ProductName { get; set; }
    public decimal UnitPrice { get; set; }
    // 其他字段完全匹配第三方API返回的JSON键名
}

三、验证测试

启动项目后,访问/swagger路径,就能看到ThirdPartyAPIController下的api/ThirdPartyAPI/products端点,直接在Swagger中测试,或用Postman调用该端点,即可获取第三方API返回的数据。

内容的提问来源于stack exchange,提问作者Smuk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 04:45:31