Хорошо, за оригинальным вопросом скрывается несколько скрытых вопросов. Я постараюсь решить ваши проблемы в меру своих возможностей, не занимая много вашего времени:
- Во втором примере AWS AspNetCoreServer принимает
IActionResult
(что на самом деле OkObjectResult
) и возвращает что-то, что лямбда-среда может интерпретировать как ответ (то же самое происходит с APIGatewayProxyResponse). Ответами на API Gateway являются JSON документы со структурой ниже.
{
"isBase64Encoded": true|false,
"statusCode": httpStatusCode,
"headers": { "headerName": "headerValue", ... },
"multiValueHeaders": { "headerName": ["headerValue", "headerValue2", ...], ... },
"body": "..."
}
Controller
на самом деле наследуется от
ControllerBase
и добавляет некоторые вещи для обработки представлений (например, метод
View
и
ViewBag
) и некоторые другие вещи. Вот пример контроллеров, построенных с использованием каждого подхода.
[Route("[controller]")]
public class AnswerController : Controller
{
[HttpPost("")]
public IActionResult Post([FromBody]Answer answer)
{
if (ModelState.IsValid)
{
return BadRequest(ModelState);
}
// yadda yadda yadda
}
}
[ApiController]
[Route("[controller]")]
public class AnswerController : ControllerBase
{
[HttpPost("")]
public IActionResult Post(Answer answer)
{
// yadda yadda yadda
}
}