首页 > 解决方案 > 从 API .NET CORE 使用 API

问题描述


我用 ASP.NET Core 做了一些 API。
然后其中一个 API 需要访问 3rd 方 API。我怎样才能做到这一点?

比方说,第 3 方 API 提供带有 3 个参数(姓名、地址、电话)的 JSON 格式。第 3 方 API 是插入到表中。我的 API 将向第 3 方 API 发送 JSON 格式。我如何从我的 API 中使用它?

以下是我的 API 代码之一:
控制器:

[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); }
    }

存储库:

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;
               
            }

        }

请指教。谢谢你。

标签: c#.netapiasp.net-core

解决方案


我的 API 将向第 3 方 API 发送 JSON 格式。我如何从我的 API 中使用它?

您可以注册一个IHttpClientFactory并使用它在您的 ASP.NET Core Web API 项目中配置和创建 HttpClient 实例,然后向该第 3 方 API 发出 HTTP 请求。

打电话AddHttpClient注册IHttpClientFactory

public void ConfigureServices(IServiceCollection services)
{
    //...

    services.AddHttpClient();

    // ...
    // Remaining code deleted for brevity.
}

从您的 API 操作发出 HTTP 请求

var client = _clientFactory.CreateClient();
//client.DefaultRequestHeaders.Add("Authorization", $"bearer {your_token_here}");

var mdata = new { Name = "test", Address = "xxx", Phone = "123456789" };

var content = new StringContent(System.Text.Json.JsonSerializer.Serialize(mdata), System.Text.Encoding.UTF8, "application/json");


var response = await client.PostAsync("https://xxxX/api/XXX", content);

if (response.IsSuccessStatusCode)
{
    //...
}

推荐阅读