各位前輩大家好 小弟使用 Postman 測試 api 的時候遇到幾個問題
由於做法是宣告一個物件,當中會有一個Author的List預計存放各種不同的Author資料
最後將物件送到後端用指定類別拆開,然後Insert到資料庫
這裡遇到另一個問題是
如果使用 HttpContext.Request.Form["Author"]的話
有兩筆一樣的資料應該如何設定迴圈(跑的次數?)逐一add回物件內的list呢
預想的結構如下:
{
"id":1,
"type":1,
"Author":[
{
"Name":"Ann",
"Age":45
},
{
"Name":"Amy",
"Age":32
}
]
}
{
{"Author":[
{
"Name":"Ann",
"Age":45
},
{
"Name":"Amy",
"Age":32
}
]}
但用HttpContext.Request.Form["Author"]會多一套大括號,也就是{{內容}}
要怎麼處理掉最外層的{}呢
框架:.net core 3.1
系統:windows10
public IActionResult FromData([FromForm] ModelOne model)
{
var authorList = new List<Author>();
foreach (var VARIABLE in model.Authors)
{
authorList.Add(JsonSerializer.Deserialize<Author>(VARIABLE));
}
return Ok(authorList);
}
public class ModelOne
{
public int id { get; set; }
public int type { get; set; }
public IList<string> Authors { get; set; }
}
public class Author
{
public string Name { get; set; }
public int Age { get; set; }
}
大概只能這樣做了吧
fromdata裡面的value視為文字 要自行轉換成物件
簡易文字教學:(我懶的貼圖)
1.form-data 直接對應法
Body => form-data 有其對應的KEY及VALUE。KEY可以選擇TEXT還是FILE。
這是有要測試上傳檔案時的唯一模式。
2.BULK資料模式
在其可編輯的右上角會有個BULK EDIT。
可填其換行資料格式。常用的資料可以儲存在這。支援註解。
所以方便替換資料。
test:1
test2:2
3.JSON資料模式
Body => raw =>最右邊預設會是TEXT,可以將其轉成你要的資料。我習慣是直接換成JSON。
因為前端大多是物件傳送。
大多數來說,一般的測試會用這種模式。因為可以從瀏覽器的開發模式直接拿到POST的JSON格式資料
以上是最簡單的資料傳送的方式說明。
至於你想要程式化處理。
https://learning.postman.com/docs/writing-scripts/test-scripts/
這裏有許多可以利用的配套。你可以找一下你想要的處理方式跟對應。
目前新版的好像可以規劃流程圖了。只是我還沒摸那一塊。
不過那邊理論上可以達到你要的東西。就是得要研究一下就是了。
感謝回答,另外請教如果使用HttpContext.Request.Form["Author"]取出來的值會有多大括號該如何處理呢
https://stackoverflow.com/questions/10830772/parsing-json-in-c-sharp
我其實要做的事情跟這一則文章幾乎一樣,但目前卡在不知如何單獨的把指定欄位取出並且是一個jsonObject,之後再用指定類別解構
另補充說明一下
我是一次post就會有重複的屬性
比方說Author就有兩位不一樣的,在單次post可以使用兩套一樣的Key/Value嗎? (Author/aaa與Age/30 下面又設定 Author/bbb與Age/20這樣)
一般正常的表單傳送,是不可能有同名份資料可以一起傳送的。
所以推測來說。你是要從陣列式的資料。
由於一般來說我都是從瀏覽器直接獲取PayLoad的傳送資料。COPY到raw內的JSON格式就可以使用。
並不會特別去設定 key 與 value
不過還是教你一下同名的傳送方式
KEY名稱後接中括號內置索引值[?](?為0 1 2 ... 的索引值)
這樣就可以多個同名。
POST進去的資料會直接變陣列格式。
To 浩瀚星空
目前對於你的回答有點懵懂,恐怕是我目前還沒到的境界檻 囧
故在此先選了另一位我較能理解的大大為最佳解答><
十分感謝你的回答,相關的文件及方式我會在後續嘗試理解
謝謝!
放心,我並不追求「最佳解答」的。
畢竟我也很懶的貼圖。單純用文字來說明,確實不太好解釋。
人家花時間截圖講解到你能懂,他當然就是最佳的答案了。
PostMan我其實也並未完全了解到很透。
就大約是一般能前後端分離測試能用就行了。
一些自動化測試跟進階的用法。我也還不是全了解的。
joey19930809
補充一下 關於星空大說的事情
一般在fromdata底下是不太會傳送這種格式的資料
主要是因為他是對應key value,等於是你一個key會對應到多筆value
你如何確定這筆value是對的,或是前端惡意傳給你的?
對於這樣的資料結構其實你會比較難去驗證
所以星空大才會說 不太會丟"同名的資料"
反而有這種需求會用frombody 去收json 或是其他格式
那你建立的model 就可以是List
底下還可以用正則去做處理 但List就沒辦法了