我有一个ASP.Net Core 2.1应用程序。我收到与下面的SO链接中提到的相同的错误。
Unexpected character encountered while parsing value: . Path '', line 1, position 1
答案部分中建议的解决方案似乎也可以解决该问题。
但是为一个属性创建一个类是开销,并且对我没有吸引力。
过去,我没有使用.Net Framework 4.5(+)创建此类开销类,但做了同样的事情
// POST api/values
[HttpPost]
public void Post([FromBody]string email)
{
}
通过邮递员,我发布
{
"email": "myemail@email.com"
}
如何在不创建任何类的情况下将电子邮件值传递给API或 这样吗?
我宁愿坚持使用[FromBody]
,因为应用程序中的所有API都接受FromBody
方法中的参数Post
。
答案 0 :(得分:4)
如果您希望不创建类就传递电子邮件值,只需传递
"myemail@email.com"
,没有{}
括号和email
键。当您通过
{
"email": "myemail@email.com"
}
解析器正确建议此值表示具有属性email
的对象,这就是为什么需要包装器类的原因。
答案 1 :(得分:2)
如果您知道自己永远只需要一个参数,那么就按照其他人的建议将其设为字符串。但是请记住,您将无法从ASP.NET Core的正文中接收两个参数:您将必须定义一个包含两个(或多个)属性的类型,并且请求正文中的单个对象将映射到这种类型。因此,如果不确定,请保存自己以后的重构并为您的请求定义类型。
不要害怕在您的项目中再创建一个类。这对机器来说是很小的开销,而您花三分钟编写它只会让您感到烦恼,但是它可以改善代码的质量,使其更具表现力,甚至可以通过使编译器发现您可能没有注意到的错误来帮助您。只需给它起一个有意义的名字,就可以了。
答案 2 :(得分:1)
您可以简单地输入不带密钥的字符串,api仍会接受它:
"myemail@email.com"