Я создаю Rest API
и Rest Client
, URL-адрес API https://localhost:44341
, а URL-адрес клиента https://localhost:44305/
, в частности, я хочу иметь возможность редактировать страницы в клиенте для небольшой настраиваемой CMS.
В любом случае, чтобы просмотреть страницу в клиенте, я делаю это:
public async Task<IActionResult> Edit(long id)
{
Page page = new Page();
using (var httpClient = new HttpClient())
{
using var response = await httpClient.GetAsync("https://localhost:44341/api/Pages/" + id);
string apiResponse = await response.Content.ReadAsStringAsync();
page = JsonConvert.DeserializeObject<Page>(apiResponse);
}
return View(page);
}
И это работает, я получаю фактические данные страницы из API, однако метод PUT в клиентене работает, вот оно:
[HttpPost]
public async Task<IActionResult> Edit(Page page)
{
using (var httpClient = new HttpClient())
{
using var response = await httpClient.PutAsync("https://localhost:44341/api/Pages/" +
page.Id, new StringContent(page.ToString()));
string apiResponse = await response.Content.ReadAsStringAsync();
}
return Redirect(Request.Headers["Referer"].ToString());
}
Когда я отправляю форму для вышеуказанного метода, он просто перенаправляет на предыдущий запрос, но изменения не сохраняются.
Вот *Метод 1015 * из API:
[HttpPut("{id}")]
public async Task<ActionResult> PutPage(long id, Page page)
{
if (id != page.Id)
{
return BadRequest();
}
context.Entry(page).State = EntityState.Modified;
await context.SaveChangesAsync();
return NoContent();
}
Когда я проверяю с использованием точек останова, я вижу, что response
в методе POST
говорит 415 unsupported media type