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

ASP.NET Core API中第三方JSON接口消费实现方法咨询

需求背景

基于ASP.NET Core开发的自有API服务需要集成第三方数据入库能力:第三方API接收携带Name、address、phone三个字段的JSON格式POST请求,完成第三方侧的数据存储。当前需要在现有自有API的代码逻辑中,实现符合格式要求的第三方请求发送能力,目前缺少对应实现方案。

现有业务代码

Controller层接口实现

[HttpPost]
public async Task<IActionResult> InsertUpdate(Devloperr model)
{
    try
    {
        var result = await repo.InsertUpdate(model);
        if (result > 0)
        {
            return Ok("Data has been saved");
        }
        return Ok("Data not saved");
    }
    catch (Exception e) { return StatusCode(500, e.Message); }
}

Repository层数据入库实现

public async Task<int> InsertUpdate(Devloperr model)
{
    mySqlConnection.Open();
    var cmd = mySqlConnection.CreateCommand();
    cmd.CommandText = @"SELECT `ID` FROM `Table1` WHERE `ID` =@ID";
    var data = await mySqlConnection.QueryAsync<Devloperr>(cmd.CommandText, param: new { ID = model.ID } );

    if (data.Count() == 1)
    {
       cmd.CommandText = @"UPDATE `Table1` SET `ID` = @ID, `NAMA` = @NAMA, `USERNAME` = @USERNAME WHERE `ID`=@ID ;";
        parameters.AddDynamicParams(model);
        var result = await mySqlConnection.ExecuteAsync(cmd.CommandText, parameters, commandType: sql);
        return result;
    }
    else
    {
        cmd.CommandText = @"INSERT INTO `Table1`(`ID`,`NAMA`,`USERNAME`) VALUES (@ID, @NAMA, @USERNAME);";
        parameters.AddDynamicParams(model);
        var result = await mySqlConnection.ExecuteAsync(cmd.CommandText, parameters, commandType: sql);
        return result;
    }
}
可落地实现建议
  • 依赖与配置准备
    • 将第三方API的请求地址、接口超时时间、鉴权密钥等可变配置项存入appsettings.json,按开发、测试、生产环境做差异化配置,禁止硬编码在业务代码中。
    • 在服务启动时注册带重试、熔断策略的IHttpClientFactory,替代手动实例化HttpClient的方式,避免高频请求下的socket连接耗尽问题。
  • 模型映射准备
    • 新建与第三方API字段严格对齐的请求模型类,属性名必须与第三方要求的Name、address、phone完全匹配,避免序列化时因字段大小写、命名规则不匹配导致参数丢失。
    • 基于现有Devloperr模型完成字段映射:比如现有模型的NAMA字段映射为第三方要求的Name,现有模型中存储地址、联系电话的字段分别映射为address、phone,若现有模型缺少对应字段需先补全入参校验逻辑,避免漏传必填参数。
  • 调用逻辑嵌入
    • 明确调用时机:必须在自有数据库完成入库、事务提交成功之后再触发第三方调用,禁止在数据库事务未提交阶段发起外部请求,避免出现本地回滚但第三方已入库的跨服务数据不一致问题。
    • 抽离独立的第三方调用服务,不要将HTTP请求逻辑直接硬写到Repository的SQL执行流程中,降低代码耦合度,方便后续单元测试与逻辑迭代。调用时通过IHttpClientFactory创建客户端,将构造好的请求对象序列化为JSON,设置正确的Content-Type: application/json请求头,发送POST请求即可。
  • 容错逻辑补全
    • 对第三方调用过程中的网络异常、超时、非2xx响应码做捕获,不要将第三方服务的异常直接透传到前端,也不要因第三方服务不可用阻断自有主流程的入库能力。
    • 第三方调用失败的场景要记录详细日志(包含请求参数、第三方返回的错误信息),必要时对接消息队列做异步重试,保证数据最终同步。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 05:45:05