본문 바로가기
개발언어/Xamarin

.NET Client에서 restful API 호출(C#)

by 공장장코난 2021. 4. 7.

Xamarin으로 작성된 모바일 앱과의 연동을 위해 .NETCore로 CRUD 작업을 지원하는 WebAPI를 생성했다. 
.NET 기반 Client는 아래 규칙으로 WebAPI와 연동하게 된다. 

restfull api 개념
meetup.toast.com/posts/92

 

REST API 제대로 알고 사용하기 : NHN Cloud Meetup

REST API 제대로 알고 사용하기

meetup.toast.com

 

작업 HTTP Method restful url 
사용자 조회 GET /api/account/id
사용자 생성 POST /api/account
사용자 수정 PUT /api/account
사용자 삭제 DELETE /api/account/id

.NET에서 연동 작업은 HttpClient 로 연동하게 되는데, 그전에 NuGet Package Manager를 통해 newton사의 Newtonsoft.Json 과 WebApi.Client를 설치해야 하며, GET,POST,PUT,DELETE Method는 httpClient object Method에 정의되어 있다.
HttpClient WebAPI 연동법은 아래와 같다. 

HttpClient object 선언
HttpClient httpClient = new HttpClient();
httpClient.BaseAddress = new Uri("https://localhost:44311");
httpClient.DefaultRequestHeaders.Accept.Clear();
httpClient.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaders("application/json");

> await httpClient.GetAsync("api/account/1");
> await httpClient.PostAsJsonAsync("api/account", account);
> await httpClient.PushAsJsonAsync($"api/account/{id}", account);
> await httpClient.DeleteAsync($"api/account/{id}");

Ex)WebAPI GET 호출 예제 ~/api/v1/account/{id}
public class Account
{
   public long id { get; set; }
   public string email { get; set; }
   public string password { get; set; }
   public string cnic { get;set; }
}

var response = await httpClient.GetAsync("/api/v1/account/1");

Account account = new Account()
account = await response.Content.ReadAsAsync(response);
string res = JSONHelper.Serialize<Account>(account);

결과
{
   "id":1
   "email":"test@gmail.com",
   "password":"1234",
   "cnic":"01012341234"
}