buat yang belum pada tau, HttpClient adalah sebuah cara untuk mengirimkan HTTP request dan menerima respon dari alamat yang kita minta tersebut, kalian dapat mengolah hasil respon dengan menggunakan method-method yang sudah disediakan di dalam class HttpClient tersebut.
Berikut ini tahap-tahap menghubungkan service dengan service lain.
- Buka visual studio , lalu buka terminal cmd dengan Ctrl + ` , jika belum memiliki visual studio sahabat dapat mendownloadnya disini
- Di terminal ketikkan yo aspnet, kemudian pilih WEB API Application
- Kemudian masukkan nama folder project, yo akan memproses dan membuat sebuah WEB API
- Kemudian masuk ke folder dengan perintah cd , lalu restore project dengan dotnet restore setelah itu jalankan web api dengan dotnet run.
- Untuk mencobanya buka web browser lalu ketikkan url localhost:5000/api/values. Hasil terlihat seperti gambar dibawah ini.
sekilas terlihat sama seperti membuat Web Api menggunakan yeoman, namun nanti kita akan melakukan sedikit perubahan dalam pada file Controller - Sebelumnya seperti ini Struktur direktori yang telah kita buat sebelumnya.
- Untuk membuat service dapat berkomunikasi dengan service lain kita perlu mengubah file controller.cs di dalam folder Controller. Berikut kode untuk hellocontroller.csusing System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;using Microsoft.AspNetCore.Mvc;using System.Net.Http;using servicehttpclient.model;namespace Service.Controllers{[Route("api/edi/[controller]")]public class HelloController : Controller{httpclientmodel client = new httpclientmodel();string _address= "api/selly/hello";// GET api/values[HttpGet]public async Task<IEnumerable<string>> Get(){var result = await client.GetProductAsync(_address);return new string[] { "Hello Edi", result };}
- Setelah mengubah controller , kita membuat model untuk controller tersebut. Buat folder baru dengan nama Model lalu buat file httpclientmodel.cs. Berikut kode untuk httpclientmodel.csusing System;using System.Net.Http;using System.Threading.Tasks;using System.Net.Http.Headers;namespace servicehttpclient.model{public class httpclientmodel{public async Task<string> GetProductAsync(string path){HttpClient client = new HttpClient();string Hello = "";client.BaseAddress = new Uri("http://hello_selly/");client.DefaultRequestHeaders.Accept.Clear();client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));try{HttpResponseMessage response = await client.GetAsync(path);if (response.IsSuccessStatusCode){Hello = await response.Content.ReadAsStringAsync();}}catch (Exception e){Console.WriteLine(e.Message);}return Hello;}}}
- Service sudah dapat diaplikasikan ke dalam docker dan dapat berkomunikasi dengan service lainnya.