iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 25
0
自我挑戰組

C# 從入門到WebApi系列 第 25

[DAY26] 參數傳遞方式與前後端分離

  • 分享至 

  • xImage
  •  

關於Http 請求的參數

主要可以分為兩種
一種是昨天所看到的在Body中帶入參數的方法
我們打開POSTMAN
點選在save下方的Code

https://ithelp.ithome.com.tw/upload/images/20200925/20109549UVcYsSCZiV.png

可以看見你的HTTP Request長成甚麼樣子
https://ithelp.ithome.com.tw/upload/images/20200925/20109549hLU5aeqlT2.png

左上角有個下拉式選單
點開後可以看見許多程式語言
https://ithelp.ithome.com.tw/upload/images/20200925/201095499X8PQByFZR.png

他會把你的Request轉成各種語言
我們選擇C#
https://ithelp.ithome.com.tw/upload/images/20200925/20109549SaZ660L4ds.png

可以看見要怎麼從你熟悉的語言發送http request
不過目前我們還用不到
只是介紹一下這個方便的功能

x-www-form-urlencoded

我們現在改選擇x-www-form-urlencoded
一樣輸入商品資訊
https://ithelp.ithome.com.tw/upload/images/20200925/20109549dITVVE7Iy1.png

然後執行我們的專案
傳送請送請求
會發現出現
https://ithelp.ithome.com.tw/upload/images/20200925/20109549R5rauzt7gh.png

這是因為我們的SERVER沒辦法Binding這個參數
所以我們打開我們的專案
在CreateProduct方法的參數欄中Product前面加上[FromForm]這個Attribute
他會告訴我們的Controller所接收的參數是透過FORM來的
ProductController.cs

        [HttpPost]
        [Route("CreateProduct")]
        public string CreateProduct([FromForm]Product product)
        {
            products.Add(product);
            return $"{JsonConvert.SerializeObject(product)}商品已加入清單";
        }

我們重新執行
https://ithelp.ithome.com.tw/upload/images/20200925/201095497QhoMD0vvU.png
可以看見商品確實被加入了

uri parameters

我們開啟新的POSTMAN 分頁
一樣在網址輸入https://localhost:5001/api/product/createproduct
方法記得改成POST
接著點擊Params
https://ithelp.ithome.com.tw/upload/images/20200925/20109549JT8LjQwNfT.png

一樣輸入參數
https://ithelp.ithome.com.tw/upload/images/20200925/20109549Sjg3TjOs8C.png

這時候會發現網址列出現了你的參數
在**?後面的那段我們稱為QueryString**
就是formUri的參數

然後我們再修改一下CreateProduct方法
將[FromForm]改成[FromQuery]

ProductController.cs

        [HttpPost]
        [Route("CreateProduct")]
        public string CreateProduct([FromQuery]Product product)
        {
            products.Add(product);
            return $"{JsonConvert.SerializeObject(product)}商品已加入清單";
        }

一樣執行專案送出請求
可以看見商品被成功加到商品列表中
https://ithelp.ithome.com.tw/upload/images/20200925/20109549KNdRJcTHaA.png

重要
通常使用QueryString的方式傳送資料會是使用GET方法
因為GET通常是去讀取某筆資料
想想你今天輸入了你的帳號密碼
然後你的帳號密碼顯示在網址列
怕.jpg

前後端分離

有發現我們現在完全沒有一個網站的畫面呈現嗎
先來簡單講解前端跟後端

前端: 負責處理UI 簡單來說就是畫面資料的呈現
後端: 負責處理資料 跟資料庫互動等等

通常WEBAPI是屬於後端的部分
例如我們今天打開購物網站
在收尋欄中輸入CPU
按下收尋

這時候前端網頁會透過XHR,Ajax,或是FetchApi等等方式
傳送一個Http Requst 到後台說我要這些資料
然後後端將資料整理完傳給前端顯示

因為我的工作是後端的工作
所以關於VIEW的部分我不會介紹因為我也不熟

前後端分離還可看這篇文章
前後端分離與 SPA
裡面滿清楚的介紹了一些概念


上一篇
[Day24] 動手做做 API 之 POST(表單等等)篇
下一篇
[Day26] 使用EF Core來建立資料庫
系列文
C# 從入門到WebApi30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言