我目前在我的專案中有一個端點:
[HttpPost("process")]
public IActionResult Process (string Val1, [FromBody] object Json)
{
//processing.....
Return Ok(...);
}
在我的客戶端,我嘗試使用 WebClient 呼叫此端點,如下所示:
string response = null;
string body = "{}";
using (var client = new WebClient())
{
client.UserDefaultCredentials = true;
client.Headers.Add(HttpRequestHeader.ContentType, "application/json; charset=utf-8");
response = client.UploadString("localhost:55555/api/process?Val1=Param", body);
}
以下是我的擔憂:
對于這個端點,我通常會傳遞一個 JSON 物件
但是,我希望這個端點也不需要正文,我希望它是空的,因為端點不應該需要它
如果您查看我的
body變數 - 我將其設定為“{}”,否則我還沒有找到將“EMPTY”主體傳遞給端點的其他方法
問題:
如何將 EMPTY 主體正確傳遞到此端點?(這個端點將被不同的客戶使用,我只是在尋找最佳實踐方法?
在我的端點中,我有
[FromBody] object Json引數。讓它成為一種更好的做法,object或者我可以選擇這樣做JObject仍然可以接受一個空的身體
如果這些問題看起來很明顯,請原諒我的“菜鳥”,我才剛剛開始 API 開發,并希望確保我使用的是最佳實踐。
uj5u.com熱心網友回復:
您當前使用的是 WebClient,該 WebClient 已過時而支持 HttpClient(請參閱此答案)。使用 HttpClient 時,您可以按如下方式發布空主體:await client.PostAsync("localhost:55555/api/process?Val1=Param", null);
至于你的第二個問題。查看資料傳輸物件,又名 DTO。簡而言之,它們是愚蠢的型別,您可以純粹用于通過 API 傳遞和接收資料,您也可以向它們添加諸如驗證之類的東西。僅當您接收動態資料時才需要使用 object 或 JObject,否則在可能的情況下使用 DTO。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/351619.html
標籤:C# json asp.net-core-webapi 来自身体属性
上一篇:有沒有一種優雅的方法可以使用django序列化程式來展平嵌套的JSON?
下一篇:SQL將重復項轉換為一行
