我希望能够从我们的Angular
前端向我们的.NET Web API
传递一个长字符串(ID列表)。但是,有时此字符串超出了URL字符数限制,因此我不想通过URL传递它。
什么是这样做的好方法?
前端:我首先想到了通过PUT's
中的HTTP Body
httpOptions
发送字符串,但是后来我意识到了PUT
请求,我什至不需要HTTP Body
-我认为我可以直接将数据传递到PUT's
data
参数中。
PUT请求] >>
public put(apiPath, data): Observable<any> { var url = this.globals.getBaseUrl() + apiPath + "/" + data["ID"]; const httpOptions = { headers: new HttpHeaders({"Content-Type": "application/json"}) ,withCredentials: true }; return this.httpClient.put<any>(url, data, httpOptions) .pipe(catchError(this.handleError)); }
。
。NET Web API:
然后,在API中,如何挖掘通过data
请求发送的PUT
?我的游戏计划是为此控制器创建一个只有一个字段的模型-ID的字符串。然后在控制器中,我将其抓取,解析,定界并将其传递给我们的数据库。只是不确定如何在控制器中抓取此data
。Controller:
] >>// PUT: api/myApiPath/5 [ResponseType(typeof(void))] public async Task<IHttpActionResult> Put_myTable(int id, _myTable _myTable) { db.Entry(_myTable).State = EntityState.Modified; try { // ----- put ----- await db.SaveChangesAsync(); // ----- /put ----- } else { error = "Unauthorized."; throw new HttpResponseException(HttpStatusCode.Forbidden); } }
我希望能够从Angular前端向我们的.NET Web API传递一个长字符串(ID列表)。但是,有时此字符串超出URL字符限制,因此我不想通过...
我使用的是.net core,但我认为您只需要在后端参数上使用[FromBody]属性,如下所示。您从前端传入的任何对象都应与后端期望的对象类型相匹配。因此,如果您在前端有一个简单的数字数组,那么您的后端将如下所示
[HttpPut]
public async Task<IHttpActionResult> Put_myTable([FromBody] List<int> ids)
{
}