0%

前言

關於Dapper的介紹,其實多到可以算月經文了XD

不過剛好有機會使用到,所以就順著介紹一下。

閱讀全文 »

前言

在 ASP.Net FrameWork 中,我們可以透過 CodeFirst 的方式,自動幫我們建立資料庫中每一個Table,並轉換成Entity,讓我們有Model可以做對應。

但是在 .Net Core 中,可就沒有辦法那麼方便點一點就可以完成了。我們得需要額外安裝其他套件,並透過下指令的方式才能自動幫我們產生。

閱讀全文 »

前陣子同事在寫 WebAPI的時候,發現 Controller內的函數無法傳入超過一個以上的參數

只要傳超過一個以上,就會在Runtime當下直接噴錯,錯誤訊息為:

1
has more than one parameter that was specified or inferred as bound from request body. Only one parameter per action may be bound from body. 

主要的意思是request body 傳入超過一個以上的參數,但在action中只應該有一個參數。

面對這樣的問題,一開始聽同事描述還覺得挺不可思議的,畢竟寫API那麼久了,從來沒聽過在Controller底下寫Method 參數最多只能給予一個。

後來請他額外測試,若是傳入基本資料型別(int,float等等) 是可以傳入多個的。

也就是說,只有傳入衍生資料型別(複雜類型),是不能過的。

但縱使是這樣,這類的錯誤訊息我依然沒遇到過。

上網研究了一下才發現,由於 Controller 內寫的Method 會默認為Action

也就是說不需要特別指定他是 [HttpGet] 或是 [HttpPost] ,他也能自動根據函數名稱來判斷,並幫你呼叫。

但這樣就會遇到一個問題,它把所有Controller裡面的Method都當成Action來呼叫了,而同時request body又只能接受一個複雜類型的參數。

因此才會噴這個錯誤。

那,為甚麼這問題我卻從來沒遇過呢?

因為筆者習慣將Controller內部的函數,都設定為private(因為都是自用)。

所以當函數設定為private就不會把它當成Action來呼叫使用,也因此這問題我從來沒發生過。

而同事遇到的這個問題,正是因為他把Controller內部的函數,統一宣告為public,因此被當作Action來呼叫,才會有這個問題。

那,如果真的想要使用public來進行呼叫呢?
就必須要在函數上加上 [NonAction] 的標籤,讓編譯器知道這個函數並不是一個Action。

因此只需要加上就可以避免此問題。

也可以使用停用推斷規則來解決此問題:

停用推斷規則

但筆者還是建議,若是複雜的商業邏輯,需要額外抽成函數來撰寫的話,應該要額外建立類別來處理業務邏輯(也就是BAL)

如果只是圖方便想直接讓Controller呼叫使用的話,也建議改成private做使用,除非萬不得已,不然建議不要設定成public,並使用 [NonAction]來宣告。

前言

有鑑於購物車的電商系統一直是前端工程師最常見的SideProject之一。

但是許多人對於訂單成立後的結帳付款,卻不了解後續要做哪些事以及付款完成後,要如何開立發票等。

因此寫了一系列的介紹文,帶各位一窺全貌,了解電商平台在結帳時如何進行發票開立的。

閱讀全文 »

前言

有鑑於購物車的電商系統一直是前端工程師最常見的SideProject之一。

但是許多人對於訂單成立後的結帳付款,卻不了解後續要做哪些事,以及有哪些常用的付款方式。

因此寫了一系列的介紹文,帶各位一窺全貌,了解電商平台在使用信用卡刷卡結帳時如何進行金流串接的。

本篇教學以中國信託的信用卡刷卡為教學範例。

閱讀全文 »

前言

有鑑於購物車的電商系統一直是前端工程師最常見的SideProject之一。

但是許多人對於訂單成立後的結帳付款,卻不了解後續要做哪些事,以及有哪些常用的付款方式。

因此寫了一系列的介紹文,帶各位一窺全貌,了解電商平台在使用信用卡刷卡結帳時如何進行金流串接的。

閱讀全文 »

前言

有鑑於購物車的電商系統一直是前端工程師最常見的SideProject之一。

但是許多人對於訂單成立後的結帳付款,卻不了解後續要做哪些事,以及有哪些常用的付款方式。

因此寫了一系列的介紹文,帶各位一窺全貌,了解電商平台在付款結帳時是如何進行金流串接的。

閱讀全文 »

前言

正常情況下,我們使用Angular發送Request取得API資料時,常見的情境都是取得json的格式。

因此HttpClient,預設會將response的內容自動轉換為json格式。

那,要如何實作檔案下載呢?

閱讀全文 »

前言

當我們在Angular中想要操作Template的DOM時,我們通常會在該DOM上加入範本參考變數(Template reference variables)

再經由ViewChild去取得,但並不是所有情況都可以取得到畫面上的DOM,因此本文主要介紹為什麼會遇到undefined問題

以及如何解決。

閱讀全文 »

前言

相信有接觸過網路通訊、封包監控的讀者來說,對於封包的內容一定都不陌生

但是若有需要做到封包監控與封包過濾的話,讀懂每一個 Byte勢必是必經之路。

因為,只有真正讀懂每一個 Byte 在做什麼,才能夠透過程式進行過濾以及解析。

閱讀全文 »