c# - 从 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;
}
}
请指教。谢谢你。
解决方案
我的 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)
{
//...
}
推荐阅读
- amazon-web-services - AWS RDS:虽然安全组对我的 ip 或 All 具有入站权限,但无法从我的本地访问
- c# - Assets/sucriptusu/movement/onflor.cs(23,13): error CS0120: An object reference is required for the non-static field, method, or property 'zoom.upZoom'
- python - Python: Trying to approximate 'portion_saved' in the following code
- arrays - How to unwind two arrays in Mongodb and project them distinctly?
- javascript - How can I return value from this child function in javascript
- reactjs - 什么是开发具有 15 个字段的表单的最佳过程,特别是使用 React JS,没有 Redux 或任何其他的语义 UI
- python - How do I get a substring of a string in Python using a recursive function?
- time - 如何在 lua 中将分钟和秒添加到日期时间?
- python - 乘法表python嵌套循环不打印完整表
- karate - How to connect to documentDB using karate?