[C#] .Net6 關於 Web API 的二三事 – form 直接 POST 到 Web API
最近都把專案升級成 .Net 6 ,沒啥大問題,只是最近想找個機會好好研究一下 Web API,想說遇到或是測試到就筆記一下,所以也不是啥教學文
如果有啥更好得做法,可以在跟我說,這邊沒有啥難度的技術,可能對很多高手來說就是喝水一樣的事情。
這次案例設計很簡單就是一個 <form> 我直接 POST 到 Web API (案例中為 TestController) 上面
介紹一下 <form> 的結構
出來長相大概長這樣,如果你看 code 無法想像的話
接下來就是 首先在 .Net 6 中,你得先在 Program.cs 加入 app.MapControllers(); 這一步我常常忘記
Web API Code Sample2 :
這案例很簡單回傳就是 IActionResult ,其實回傳他預設就會是 ontent-type: application/json; charset=utf-8
回應結果
看一下回應的 headers
這裡面值得一提的就是,input 如果 type 是 number ,WebAPI 這邊是可以用 decimal 承接,如果是 input:checkbox 同一個 name ,則可以使用 string[] 接 (如文中的 hobby)
這其實非常方便,當然一般狀況通常都是在前端準備好物件(一個 自訂好結構的 json ) 在一次往後送,不過這是測試,我也非常偷懶的直接用 dynamic 接了就拋
再來測試 XML 輸出,因為輸出 dynamic 比較麻煩所以我建立了一個物件 User.cs
Web API Code Sample3 :
注意,需要再 Program.cs 中 var app = builder.Build(); 之前加入
當然 form 那邊的 action 也要改成 action="/api/test/sample3"
回應結果:
回應的 headers
注意: 如果你的 Web API 部分有些是允許 null 或是空值傳入 ,但是你傳入到 Web API 會出現
{
"type":"https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title":"One or more validation errors occurred.",
"status":400,
"traceId":"00-c483917b91ff3410d2305af939c2ac3e-60280f3f85d80a58-00",
"errors":{
"userId":[
"The userId field is required."
]
}
需要再 Program.cs 中 修改這一段
需要再 AddControllers 中加入 options.SuppressImplicitRequiredAttributeForNonNullableReferenceTypes = true
大概筆記到這裡,不算教學,算是給自己的筆記