Я пытаюсь протестировать свой API AWS Lambda .Net Core 3.1.
Я создал стандартное приложение с помощью инструментов AWS для Visual Studio и добавил свой AesController. Стандартный запрос Get без параметров в аргументе тела работает нормально, однако, когда я пытаюсь вызвать запрос Get с параметрами, я получаю исключение 400 Bad Request с . Значение JSON не может быть преобразовано в System.String . Путь: $ | LineNumber: 0 | BytePositionInLine: 1.
Функция тестирования:
[Fact]
public async Task TestGetEncrypt()
{
var lambdaFunction = new LambdaEntryPoint();
var requestStr = File.ReadAllText("./SampleRequests/AesController-GetEncrypt.json");
var request = JsonConvert.DeserializeObject<APIGatewayProxyRequest>(requestStr);
var context = new TestLambdaContext();
var response = await lambdaFunction.FunctionHandlerAsync(request, context);
Assert.Equal(200, response.StatusCode);
Assert.Equal("뺕結确", response.Body);
Assert.True(response.MultiValueHeaders.ContainsKey("Content-Type"));
Assert.Equal("application/json; charset=utf-8",
response.MultiValueHeaders["Content-Type"][0]);
}
Настройки Json:
{
"resource": "/{proxy+}",
"path": "/aes/GetEncrypt",
"httpMethod": "GET",
"headers": {
"Content-Type": "application/json"
},
"queryStringParameters": null,
"pathParameters": {
"proxy": "aes/GetEncrypt"
},
"stageVariables": null,
"requestContext": {
"accountId": "AAAAAAAAAAAA",
"resourceId": "5agfss",
"stage": "test-invoke-stage",
"requestId": "test-invoke-request",
"identity": {
"cognitoIdentityPoolId": null,
"accountId": "AAAAAAAAAAAA",
"cognitoIdentityId": null,
"caller": "BBBBBBBBBBBB",
"apiKey": "test-invoke-api-key",
"sourceIp": "test-invoke-source-ip",
"cognitoAuthenticationType": null,
"cognitoAuthenticationProvider": null,
"userArn": "arn:aws:iam::AAAAAAAAAAAA:root",
"userAgent": "Apache-HttpClient/4.5.x (Java/1.8.0_102)",
"user": "AAAAAAAAAAAA"
},
"resourcePath": "/{proxy+}",
"httpMethod": "GET",
"apiId": "t2yh6sjnmk"
},
"body": "{\"Data\": \"test_me!\"}"
}
API Получить функцию
// GET aes/Encrypt
[HttpGet("GetEncrypt")]
public async Task<IActionResult> GetEncrypt([FromBody] string content)
{
var jsonConvert = JsonConvert.DeserializeObject<JsonAes>(content);
var aesCrypt = new AesCrypt(jsonConvert);
return Ok(Encoding.Unicode.GetString(await aesCrypt.CryptAes()));
}
Я считаю, что я делаю что-то не так с аргументом тела в настройках JSON. Я попытался передать обычный формат JSON без, но получаю ту же ошибку.