發表文章

目前顯示的是有「MVC」標籤的文章

ASP.NET Core 2 使用 HttpClientFactory 讀取中央氣象局 OpenData 的 API (json格式)

圖片
帳號申請方式可以參考前一篇文章: ASP.NET Core 2 使用 HttpClientFactory 讀取中央氣象局 OpenData 的XML下載→註冊CWB會員 以下稱中央氣象局 OpenData 平台為 CWBODP 這個API服務是提供給APP使用的,畢竟XML格式對行動裝置的運算解讀能力與傳輸資料量都是很傷的(消耗資源),操作起來也不是那麼便利,雖然它(XML)比較嚴謹。 CWODP 取用 API 資料的 URI: https://opendata.cwb.gov.tw/api/v1/rest/datastore/{資料代碼}?Authorization={授權碼} 前面篇章 已經講述過 HttpClientFactory 的用法了,所以這裡我只演示直接處理接收後的資料方式。 首先在 startup.cs 裡面的 ConfigureServices 定義讀取方法(以讀取F-C0032-001資料為例): startup.cs         public void ConfigureServices( IServiceCollection services)         {             services.AddHttpClient( "CWBAPI" , c =>             {                 c.BaseAddress = new Uri ( "https://opendata.cwb.gov.tw/api/v1/rest/datastore/F-C0032-001?Authorization=CWB-1234ABCD-78EF-GH90-12XY-IJKL12345678" );                 c.DefaultRequestHeaders.Add( "Accept", "*/*"...

ASP.NET Core 2 使用 HttpClientFactory 讀取中央氣象局 OpenData 的XML 下載

圖片
這是使用 ASP.NET Core 2 來讀取 CWB 的開放資料的 XML 檔,並讓 Client 端下載方式 註冊CWB會員 CWB OpenData 平台(以下稱CWBODP)取用資料必須先註冊會員→ 這裡註冊 然後,登入OpenData平台→ 這裡登入 選擇 『資料選擇說明』頁面 ,在下方可以找到『取得授權碼』,這個頁面下有使用教學 要取得資料代碼可以從 『資料清單』頁面 取得需要的代碼 有了上述資訊後,就可以著手開始做 .NET Core 2 的取用程式了。 CWODP取用 XML 檔案的 URI: http://opendata.cwb.gov.tw/opendataapi?dataid= {資料代碼} &authorizationkey= {授權碼} .NET Core 2 使用 HttpClient 有以下幾種: 一般 HttpClient 方式 直接使用 HttpClientFactory 具名式 Client 型別式 Client 產生式 Client 一般 HttpClient 方式 FileController.cs using System; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using System.Net.Http; namespace CWBReader.Controllers {     [Route("[controller]")]     public class FileController : Controller     {         [Route("")]         public async Task<string> DownloadFile()         {             using (var client = new HttpClient())  ...

ASP.NET Core 2 關於 MVC Route Attribute

圖片
關於 ASP.Net Core 2 裡面使用的路由方式有很多種,MVC 的 Route Attribute 算是我常用的方法,因為它的維護上可以和主程式分離所以比較容易。 但是,一開始的時候常常搞不懂它的運作方式,跌跌撞撞失敗了不少次才搞懂,因此特別記錄下來以便給其他需要的人看。 先講 MVC 裡面對於 URL 的拆解方式,假如看到下面的 URL: http://localhost:5000/hr/Employee_GetByID?=k004521 它的組成就是像下面階層一樣: 用企業的描述法來說就是到 localhost:500 的服務器上, (Controller)取得人資系統(HR/Human Resources)資訊裡, (Action)以ID方式取得員工資料(Employee_GetByID), (Arguments)員工編號為 k004521 這樣好處是容易理解這個 Request 的目的。 當然回傳的內容依照自己系統需求而訂,可以是純字串、XML字串或是JSON字串都可以。 那麼,在ASP.NET Core 2 如何實現呢? 首先,準備一個類別檔案 ApiControllers.cs,這檔案我習慣放在 Controllers 資料夾下面(分類整理比較方便),當然懶得這樣分類也是可以放在與 Startup.cs 同一層下 using Microsoft.AspNetCore.Mvc ; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace SimplyApi.Controllers {    [ Route ( "about" )]     public class ApiAboutController {       [ Route ( "" )]       public string home() {           return "Resource Suppo...