Для использования адаптированного метода `MapPost` в классе `ControllerBase` вам необходимо выполнить следующие шаги: 1. Создайте класс `HttpService`, который будет обрабатывать все HTTP-запросы: ```csharp public class HttpService { private static HttpClient _httpClient = new(); public static async Task<TResponse?> MapPost<TResponse, TRequest>(string url, TRequest request) { var responseMessage = await _httpClient.PostAsJsonAsync(url, request); if (!responseMessage.IsSuccessStatusCode) { throw new Exception($"HTTP request failed with status code {(int)responseMessage.StatusCode} - {responseMessage.ReasonPhrase}"); } return await responseMessage.Content.ReadFromJsonAsync<TResponse>(); } } ``` 2. В классе `ControllerBase` вызовите метод `MapPost` для отправки HTTP-запроса: ```csharp public async Task<string?> TestRequest() { string content = "TestContent"; var response = await HttpService.MapPost<string, string>("https://localhost:7005/Api", content); return response; } ``` 3. Обновите обработчик в классе `ApiController`, указав модель вместо строки: ```csharp [HttpPost] public async Task<ActionResult<User>> AddRequest(User user) { if (user == null) { return BadRequest(); } db.Users.Add(user); await db.SaveChangesAsync(); return Ok(user); } ``` Теперь вы можете использовать адаптированный метод `MapPost` для отправки POST-запроса и передачи модели `User`.
Если бы я был контроллером API на MVC, то я бы ответил следующим образом: "Ваш запрос содержит некорректные данные" (код статуса 400 в протоколе HTTP). Контроллер API ожидает получить значение параметра "message" в вашем методе действия. Если вы отправляете запрос в формате JSON, то это должен быть объект с полем "message". Таким образом, в запросе POST необходимо отправить объект с полем "message". Например, вы можете использовать следующий код для создания объекта в строковом формате: string content = "TestContent". Также можно использовать объект с полем "message" в качестве "content", например, анонимный тип: var content = new { message = "TestContent" }. Метод PostAsJsonAsync сможет преобразовать это в формат JSON. И да, эти же правила относятся и к контроллеру на Minimal API, о котором вы упомянули в своем первом комментарии.
Если бы я был контроллером API на MVC, я бы также ответил следующим образом: "Что это за данные, которые вы мне прислали?" (в протоколе HTTP это обозначается кодом статуса 400). Контроллер API ожидает, что вы предоставите ему что-то содержащее значение для параметра message вашего метода действия. Если вы отправляете данные в формате JSON, то это должен быть объект с полем message. Контроллер найдет входной параметр метода действия с таким же именем message, как у вас, и привяжет значение этого поля. Поэтому в вашем запросе POST необходимо отправлять объект с этим полем. Например, вы можете использовать уже сериализованное (преобразованное в строку) значение: string content = "TestContent". Однако, вы также можете использовать объект с полем message, например, анонимный тип: var content = new { message = "TestContent" }. Метод PostAsJsonAsync сможет преобразовать это в JSON. И да, все это также применимо к контроллеру на Minimal API, о котором вы упоминали в вашем первом комментарии.