[英]FromBody and FromQuery attributes fail for HttpPost, returns "One or more validation errors occurred"
請看我的 c# core api 代碼如下:
[HttpPost]
public bool Save([FromBody] string data,[FromQuery] ICollection<int> list)
{
var result = true;
return result;
}
和角度后調用如下:
postAction(data: any, list: number[]): Observable<any> {
let params = new HttpParams().set('scopes', JSON.stringify(list));
return this.httpClient.post( `${this.apiUri}/Save`,data, { params });
}
有了這些,我收到狀態代碼為 400 的“發生一個或多個驗證錯誤”錯誤。
我們不能同時使用 FromBody 和 FromQuery 嗎?
更新1:
代碼詳細信息 400 未記錄的錯誤:響應正文
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"traceId": "00-b6e1d156b5ff1940a6186060c4902663-36e8ff61a6d6374b-00",
"errors": {
"$": [
"'s' is an invalid start of a value. Path: $ | LineNumber: 0 | BytePositionInLine: 0."
]
}
}
代碼未到達控制器,因為 ASP.NET Core 運行驗證以斷言請求中的數據有效並且可以映射到您的操作的參數。 向 ASP.NET Core 發送數據時,重要的是數據的結構符合操作的預期,否則,框架會返回 BadRequest 響應(狀態碼 400)。
在您的代碼中,查詢參數名為list
,在 Angular 代碼中,您將其作為scopes
發送。 這些應該匹配,因此您應該重命名其中之一(或使用FromQuery
的構造函數參數將名稱設置為scopes
)。
此外,刪除查詢參數的JSON.stringify
並分配數組。 然后,該 url 將具有多個scopes
值,例如:
/mycontroller/?scopes=1&scopes=3&scopes=5
ASP.NET Core Web API 以不同的方式解析 URI,並將值分配給scopes
參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.