반응형
C#에서 Rest API를 사용하는 방법과 뉴스 정보를 가져오는 Test Code를 정리하고자 합니다.
먼저 뉴스 정보를 가져오기 위해서 Open API 접속 정보와 Key를 가지고 와야 합니다.
- 뉴스정보 Open API : newsapi.org/
newsapi에 접속하고 로그인을 하면 아래화면과 같이 API Key값이 생성됩니다.
- 그리고 Document에서 가이드해주는 내용을 확인하고 가이드에 따라 Rest API를 사용하면 됩니다.
- Base URL : http://newsapi.org/v2/top-headlines
- Query Parameter :
- country : us / kr 등 국가코드
- apiKey : 본인 계정의 apiKey 값
이제 프로젝트에서 RestAPI를 사용하기 위한 RestSharp이라는 라이브러리를 설치후 해당 라이브러리를 이용하여 쿼리를 합니다.
- RestSharp 정보 : restsharp.dev/
이제 프로젝트에서 NuGep Package에서 RestSharp을 검색하여 설치합니다.
이제 소스코드를 작성합니다. 필요한 정보는 newsapi에서 확인한 내용들을 이용하여 파라미터에 적용합니다.
string baseUrl = @"http://newsapi.org/v2";
RestClient client = new RestClient(baseUrl);
var request = new RestRequest("/top-headlines", Method.GET);
request.AddQueryParameter("country", "kr");
request.AddQueryParameter("apiKey", "8a973bcb078b4731ae1e7543d1acdd88");
IRestResponse response = client.Get(request);
var content = response.StatusCode.ToString();
if (response.StatusCode == HttpStatusCode.OK)
{
txtResult.Text = response.Content;
}
코드를 실행해보면 아래와 내용과 같이 Response Body에 json포맷으로 결과가 수신됩니다.
이제 json 데이타를 Deserialize하여 리스트에 출력하면 아래 화면과 같이 뉴스 리스트가 출력됩니다.
전체 소스코드
using Newtonsoft.Json;
using RestSharp;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WinformExamples.RestAPI
{
public partial class RestApiTestDlg : Form
{
public class NewsContent
{
public string author { get; set; }
public string title { get; set; }
public string description { get; set; }
public string url { get; set; }
public string urlToImage { get; set; }
public DateTime publishedAt { get; set; }
public string content { get; set; }
}
public class ResponseContent
{
public string status { get; set; }
public int totalResults { get; set; }
public List<NewsContent> articles { get; set; }
}
public RestApiTestDlg()
{
InitializeComponent();
}
private void btnGetNews_Click(object sender, EventArgs e)
{
string baseUrl = @"http://newsapi.org/v2";
RestClient client = new RestClient(baseUrl);
var request = new RestRequest("/top-headlines", Method.GET);
request.AddQueryParameter("country", "kr");
request.AddQueryParameter("apiKey", "8a973bcb078b4731ae1e7543d1acdd88");
IRestResponse response = client.Get(request);
var content = response.StatusCode.ToString();
if (response.StatusCode == HttpStatusCode.OK)
{
ResponseContent news = JsonConvert.DeserializeObject<ResponseContent>(response.Content);
txtResult.Text = response.Content;
dgvNews.DataSource = news.articles;
}
}
}
}
반응형
'[====== Development ======] > C#' 카테고리의 다른 글
WPF DynamicResource 적용 및 UI 에 Style 적용 (0) | 2021.01.12 |
---|---|
.Net용 Json 라이브러리 (0) | 2021.01.07 |
Extension Method (0) | 2021.01.07 |
간단한 Logger 만들기 (0) | 2021.01.07 |
C# Expression (0) | 2021.01.04 |