결과를 데이터베이스에 저장하기 위해 asp.net 웹 API에서 웹 API를 소비하는 방법은 무엇입니까?
다른 ASP에서 WEBAPI를 어떻게 소비하는지 궁금합니다.응답을 데이터베이스에 저장하는 Net Web API.javascript, console application 등의 클라이언트에서 WEBAPI를 소비하는 방법을 알고 있습니다.
하지만 요구사항은 제 WEBAPI에 의해 타사 API로부터 데이터를 끌어와 데이터베이스에 저장하여 제 WEBAPI를 사용하는 고객들이 제게 데이터를 요청하는 것입니다.
Asp로 이것을 할 수 있습니까?넷웹 API?
이 자습서에서는 C#으로 웹 API를 소비하는 방법을 설명합니다. 이 예에서는 콘솔 응용 프로그램을 사용하지만 다른 웹 API를 사용하여 당연히 소비할 수도 있습니다.
http://www.asp.net/web-api/overview/web-api-clients/calling-a-web-api-from-a-net-client
당신은 그것을 봐야 합니다.HttpClient
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://localhost/yourwebapi");
요청이 다음과 같이 Accept 헤더를 사용하여 JSON에서 응답을 요청하는지 확인합니다.
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
이제 자습서와 다른 부분이 나옵니다. 다른 개체와 동일한 개체가 있는지 확인하십시오.WEB API
, 그렇지 않다면 개체를 자신의 개체에 매핑해야 합니다.ASP.NET
전환할 것입니다.JSON
원하는 개체로 수신합니다.
HttpResponseMessage response = client.GetAsync("api/yourcustomobjects").Result;
if (response.IsSuccessStatusCode)
{
var yourcustomobjects = response.Content.ReadAsAsync<IEnumerable<YourCustomObject>>().Result;
foreach (var x in yourcustomobjects)
{
//Call your store method and pass in your own object
SaveCustomObjectToDB(x);
}
}
else
{
//Something has gone wrong, handle it here
}
제가 사용하는 것을 알아두시기 바랍니다..Result
예를 들면사용을 고려해야 합니다.async
await
무늬를 여기에.
설명할 수 없는 이유로 인해 이 솔루션은 제게 적합하지 않습니다(아마도 유형의 비호환성). 그래서 저는 제 자신을 위한 솔루션을 생각해 냈습니다.
HttpResponseMessage response = await client.GetAsync("api/yourcustomobjects");
if (response.IsSuccessStatusCode)
{
var data = await response.Content.ReadAsStringAsync();
var product = JsonConvert.DeserializeObject<Product>(data);
}
이렇게 하면 내 콘텐츠가 JSON 문자열로 파싱된 다음 내 객체로 변환됩니다.
public class EmployeeApiController : ApiController
{
private readonly IEmployee _employeeRepositary;
public EmployeeApiController()
{
_employeeRepositary = new EmployeeRepositary();
}
public async Task<HttpResponseMessage> Create(EmployeeModel Employee)
{
var returnStatus = await _employeeRepositary.Create(Employee);
return Request.CreateResponse(HttpStatusCode.OK, returnStatus);
}
}
항속성
public async Task<ResponseStatusViewModel> Create(EmployeeModel Employee)
{
var responseStatusViewModel = new ResponseStatusViewModel();
var connection = new SqlConnection(EmployeeConfig.EmployeeConnectionString);
var command = new SqlCommand("usp_CreateEmployee", connection);
command.CommandType = CommandType.StoredProcedure;
var pEmployeeName = new SqlParameter("@EmployeeName", SqlDbType.VarChar, 50);
pEmployeeName.Value = Employee.EmployeeName;
command.Parameters.Add(pEmployeeName);
try
{
await connection.OpenAsync();
await command.ExecuteNonQueryAsync();
command.Dispose();
connection.Dispose();
}
catch (Exception ex)
{
throw ex;
}
return responseStatusViewModel;
}
저장소
Task<ResponseStatusViewModel> Create(EmployeeModel Employee);
public class EmployeeConfig
{
public static string EmployeeConnectionString;
private const string EmployeeConnectionStringKey = "EmployeeConnectionString";
public static void InitializeConfig()
{
EmployeeConnectionString = GetConnectionStringValue(EmployeeConnectionStringKey);
}
private static string GetConnectionStringValue(string connectionStringName)
{
return Convert.ToString(ConfigurationManager.ConnectionStrings[connectionStringName]);
}
}
언급URL : https://stackoverflow.com/questions/19448690/how-to-consume-a-webapi-from-asp-net-web-api-to-store-result-in-database
'code' 카테고리의 다른 글
plsql 오라클 DB 날짜에 대해 요일을 가져오는 방법 (0) | 2023.09.10 |
---|---|
python을 통해 MySQL 데이터베이스에서 Base64 이미지 검색 (0) | 2023.09.10 |
기본 스프링 부트 앱이 작동하지 않으며 다음을 표시합니다.프로세스 xxxx에서 실시간 데이터를 새로 고치지 못함 (0) | 2023.09.10 |
상위 구성 요소의 속성 액세스 (0) | 2023.09.10 |
안드로이드 및 (이미지) 보기 알파에 대한 알파 (0) | 2023.09.10 |