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

如何将reqres.in等外部接口数据拉取到自有Web API中?

拉取reqres用户数据到Web API的可行解决方案

首先你需要先修正现有users类的问题:当前的构造函数要求传入int和string两个参数,JSON反序列化时需要无参构造函数才能正常实例化对象,否则会触发反序列化报错。同时reqres的接口返回结果是带分页信息的嵌套结构,你需要额外定义外层响应类接收数据。

以下是两种常用的落地方案,都基于.NET生态实现:

方案1:原生IHttpClientFactory + System.Text.Json(无需引入第三方依赖)

  • 第一步:修正实体类定义
// 类名首字母大写符合C#命名规范,也可以保留原名users
public class Users
{   
    // 新增无参构造函数供反序列化使用
    public Users(){}

    public Users(int ID, string url)
    {
        id = ID;
    }

    public int id { get; set; }
    public string email { get; set; }
    public string first_name { get; set; }
    public string last_name { get; set; }
    public string avatar { get; set; }
}

// 对应reqres接口的外层响应结构
public class ReqresUserResponse
{
    public int page { get; set; }
    public int per_page { get; set; }
    public int total { get; set; }
    public int total_pages { get; set; }
    public List<Users> data { get; set; }
}
  • 第二步:在Program.cs中注册HttpClient服务,避免手动实例化HttpClient导致的端口耗尽问题
// .NET 6+ 顶层语句写法
builder.Services.AddHttpClient();
  • 第三步:编写数据拉取逻辑,可以写在控制器或者单独的服务类中
private readonly IHttpClientFactory _httpClientFactory;

// 构造函数注入IHttpClientFactory
public YourService(IHttpClientFactory httpClientFactory)
{
    _httpClientFactory = httpClientFactory;
}

public async Task<List<Users>> FetchReqresUsersAsync()
{
    var client = _httpClientFactory.CreateClient();
    // 发起GET请求拉取数据
    var response = await client.GetAsync("https://reqres.in/api/users/");
    // 校验请求是否成功,非2xx状态码会抛出异常
    response.EnsureSuccessStatusCode();
    // 反序列化响应结果
    var responseData = await response.Content.ReadFromJsonAsync<ReqresUserResponse>();
    // responseData.data即为拉取到的用户列表,可按需存入数据库、或直接返回给你的API调用方
    return responseData.data;
}

方案2:使用Newtonsoft.Json反序列化(适配已有Newtonsoft.Json依赖的老项目)

拉取逻辑和方案1一致,仅反序列化步骤替换为Newtonsoft.Json的实现即可:

var jsonString = await response.Content.ReadAsStringAsync();
var responseData = JsonConvert.DeserializeObject<ReqresUserResponse>(jsonString);

可选优化点

  • reqres接口默认分页返回数据,如果需要拉取全量用户,可以先请求第一页拿到total_pages字段,循环请求所有页码合并用户列表即可
  • 可以引入Polly配置重试、熔断策略,处理接口请求超时、失败的异常场景
  • 拉取到数据后可以按需做字段校验、格式转换,再写入你的业务存储层

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 03:06:08