C# 在测试体中传递Json时.Net Core 3.1 AWS Lambda错误
我正在尝试测试我的AWS Lambda.Net Core 3.1 API 我使用用于VisualStudio的AWS工具创建了一个标准应用程序,并添加了AesController。正文参数中没有参数的标准Get请求工作正常,但当我尝试使用参数调用Get请求时,我得到了400个错误请求异常,JSON值无法转换为System.String。路径:$|行号:0 |字节位置行:1 测试功能:C# 在测试体中传递Json时.Net Core 3.1 AWS Lambda错误,c#,api,.net-core,aws-lambda,C#,Api,.net Core,Aws Lambda,我正在尝试测试我的AWS Lambda.Net Core 3.1 API 我使用用于VisualStudio的AWS工具创建了一个标准应用程序,并添加了AesController。正文参数中没有参数的标准Get请求工作正常,但当我尝试使用参数调用Get请求时,我得到了400个错误请求异常,JSON值无法转换为System.String。路径:$|行号:0 |字节位置行:1 测试功能: [Fact] public async Task TestGetEncrypt() {
[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]);
}
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中的body参数有问题。我试图传递一个正常的JSON格式,但我得到了相同的错误。我设法找到了一个解决方案。 我需要编辑get请求函数参数以指向对象而不是普通字符串 正确的代码:
// GET aes/Encrypt
[HttpGet("GetEncrypt")]
public async Task<IActionResult> GetEncrypt([FromBody] JsonAes content)
{
var aesCrypt = new AesCrypt(content);
return Ok(Encoding.Unicode.GetString(await aesCrypt.CryptAes()));
}
内容类型应该是application/jsonok,在标题中,对吗?现在我要回复400个错误的请求显示请求的值与设置相同JSONLet的请保持评论的文明和建设性。非常感谢。
// GET aes/Encrypt
[HttpGet("GetEncrypt")]
public async Task<IActionResult> GetEncrypt([FromBody] JsonAes content)
{
var aesCrypt = new AesCrypt(content);
return Ok(Encoding.Unicode.GetString(await aesCrypt.CryptAes()));
}