C# WPF에서 Web API 연동 방법 (REST API, JSON)
C# WPF 애플리케이션에서 Web API를 연동하면 외부 서비스와 데이터를 주고받을 수 있어 애플리케이션의 기능을 확장할 수 있습니다. REST API는 간단한 HTTP 요청과 응답을 통해 데이터를 처리하는 방식으로, 특히 JSON 형식의 데이터를 주고받기 때문에 Web API와의 연동은 매우 직관적이고 효율적입니다. 이 글에서는 C# WPF 애플리케이션에서 REST API를 호출하고 JSON 데이터를 처리하는 방법을 알아보겠습니다.
1. Web API와 REST API란?
Web API(Web Application Programming Interface)는 애플리케이션이 HTTP를 통해 외부 시스템과 데이터를 주고받을 수 있도록 하는 인터페이스입니다. REST API는 이 Web API 중 하나로, HTTP 메서드(GET, POST, PUT, DELETE)를 사용하여 리소스에 접근하고 조작하는 방식입니다. 주로 JSON(JavaScript Object Notation) 형식으로 데이터를 주고받습니다.
2. C# WPF에서 Web API 연동하기
C# WPF에서 Web API를 연동하는 방법은 여러 가지가 있지만, 가장 많이 사용되는 방법은 HttpClient 클래스를 활용하는 것입니다. HttpClient를 사용하면 HTTP 요청을 보내고, API에서 반환한 데이터를 쉽게 처리할 수 있습니다.
2.1. HttpClient 설치
먼저, 프로젝트에 HttpClient
를 사용하기 위해서는 System.Net.Http 네임스페이스를 추가해야 합니다. 또한, 프로젝트가 .NET Core 또는 .NET Framework 4.5 이상이어야 HttpClient를 사용할 수 있습니다.
using System.Net.Http;
2.2. Web API 호출하기
이제 HttpClient를 사용하여 REST API를 호출하고 JSON 데이터를 가져오는 방법을 살펴보겠습니다. 예를 들어, GET 요청을 보내고 JSON 데이터를 받아오는 예제를 작성해 보겠습니다.
using System.Net.Http;
using System.Threading.Tasks;
using Newtonsoft.Json;
public class ApiService
{
private static readonly HttpClient client = new HttpClient();
public async Task GetDataFromApiAsync()
{
// Web API URL
var url = "https://api.example.com/data";
// GET 요청 보내기
var response = await client.GetStringAsync(url);
// JSON 데이터를 MyData 객체로 변환
var data = JsonConvert.DeserializeObject(response);
return data;
}
}
public class MyData
{
public string Name { get; set; }
public int Age { get; set; }
}
위의 코드에서 GetDataFromApiAsync
메서드는 비동기적으로 Web API에 GET 요청을 보내고, JSON 형식으로 응답 받은 데이터를 MyData
객체로 변환합니다. 이때 Newtonsoft.Json 라이브러리의 JsonConvert.DeserializeObject
메서드를 사용하여 JSON을 객체로 변환합니다.
2.3. API 응답 처리
Web API에서 반환하는 JSON 데이터는 다양한 형식이 있을 수 있습니다. 위 예제에서는 간단한 MyData
클래스를 사용하여 데이터를 처리했습니다. 실제 API의 응답 형식에 따라 적절한 클래스 구조를 정의해야 합니다. 예를 들어, 배열 형식의 데이터나 중첩된 객체가 있을 수 있기 때문에, 이를 처리할 수 있는 클래스 모델을 설계해야 합니다.
2.4. WPF UI에서 API 호출하기
WPF 애플리케이션에서는 UI 스레드에서 직접 API를 호출하는 대신, 비동기 방식으로 API 호출을 처리해야 UI가 멈추지 않도록 해야 합니다. 예를 들어, 버튼 클릭 시 API를 호출하고, 받은 데이터를 UI에 업데이트하는 예제를 살펴보겠습니다.
using System.Windows;
public partial class MainWindow : Window
{
private ApiService apiService;
public MainWindow()
{
InitializeComponent();
apiService = new ApiService();
}
private async void Button_Click(object sender, RoutedEventArgs e)
{
var data = await apiService.GetDataFromApiAsync();
MessageBox.Show($"Name: {data.Name}, Age: {data.Age}");
}
}
위의 코드에서 Button_Click
메서드는 버튼 클릭 시 비동기적으로 API를 호출하고, 반환된 데이터를 MessageBox에 출력합니다. 이와 같이 비동기 방식으로 API를 호출하면 UI 스레드를 차단하지 않으므로 사용자 경험이 개선됩니다.
3. C# WPF에서 POST 요청 보내기
Web API에 데이터를 전송하는 경우에는 POST 요청을 사용합니다. POST 요청을 보내려면 HttpClient.PostAsync 메서드를 사용합니다. 아래는 JSON 데이터를 API에 보내는 예제입니다.
public async Task PostDataToApiAsync(MyData data)
{
var url = "https://api.example.com/submit";
var jsonData = JsonConvert.SerializeObject(data);
var content = new StringContent(jsonData, Encoding.UTF8, "application/json");
var response = await client.PostAsync(url, content);
return response.IsSuccessStatusCode;
}
위 코드에서 PostDataToApiAsync
메서드는 MyData
객체를 JSON 형식으로 변환하여 POST 요청을 보냅니다. 성공적으로 요청이 완료되면 true를 반환합니다.
4. 결론
C# WPF 애플리케이션에서 Web API를 연동하는 방법을 배웠습니다. REST API를 사용하여 데이터를 가져오고, JSON 형식으로 처리하는 방식은 매우 직관적이고 효율적입니다. HttpClient 클래스를 사용하면 간편하게 API를 호출할 수 있으며, 비동기 방식으로 API와 통신함으로써 UI의 응답성을 유지할 수 있습니다. 또한, POST 요청을 통해 데이터를 전송하는 방법도 학습했습니다. 이러한 방식으로 Web API와 WPF 애플리케이션을 연동하면 외부 데이터와 상호작용할 수 있는 강력한 애플리케이션을 개발할 수 있습니다.
'C#' 카테고리의 다른 글
Blazor 및 .NET MAUI - 최신 .NET 기술을 활용한 앱 개발 (0) | 2025.03.26 |
---|---|
C# WPF에서 LocalDB 또는 SQLite 연동하는 방법 (0) | 2025.03.25 |
C# WPF에서 Dependency Injection(DI) 적용하기 (0) | 2025.03.25 |
C# Prism 프레임워크로 WPF MVVM 구조 최적화하기 (0) | 2025.03.25 |
C# WPF와 MVVM을 활용한 멀티쓰레딩(비동기 UI 업데이트) (0) | 2025.03.25 |