code

결과를 데이터베이스에 저장하기 위해 asp.net 웹 API에서 웹 API를 소비하는 방법은 무엇입니까?

starcafe 2023. 9. 10. 12:25
반응형

결과를 데이터베이스에 저장하기 위해 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

반응형