Я бы хотел иметь возможность передавать длинную строку (список идентификаторов) из нашего Angular
внешнего интерфейса в наш .NET Web API
. Однако иногда эта строка превышает ограничение на количество символов в URL, поэтому я не хочу передавать ее через URL.
Какой хороший способ сделать это?
Front end: Сначала я подумал отправить строку через 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
? Мой игровой план состоял в том, чтобы сделать модель для этого контроллера, которая имеет только одно поле - строку идентификаторов. Затем в контроллере я бы взял его, проанализировал, разделил и передал в нашу базу данных. Просто не знаете, как получить это 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);
}
}