将一长串ID传递到Web API,而不将其放在URL中

我希望能够将一个长字符串(ID列表)从我们的Angular前端传递到我们的.NET Web API。但是,有时此字符串超出了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

控制器:

// 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);
        }

}
xufeng123456 回答:将一长串ID传递到Web API,而不将其放在URL中

我使用的是.net core,但我认为您只需要在后端参数上使用[FromBody]属性,如下所示。您从前端传入的任何对象都应与后端期望的对象类型相匹配。因此,如果您在前端有一个简单的数字数组,那么您的后端将如下图所示

[HttpPut]
public async Task<IHttpActionResult> Put_myTable([FromBody] List<int> ids)
{
}
本文链接:https://www.f2er.com/3157118.html

大家都在问