C# Dotnet核心Web API无意中摆脱了倒退
我有一个端点,它接受C# Dotnet核心Web API无意中摆脱了倒退,c#,json,asp.net-core,.net-core,C#,Json,Asp.net Core,.net Core,我有一个端点,它接受currentPassword、newPassword和newPasswordConfirmation的json数据 我遇到了一个问题,因为我想接受密码中的文字反斜杠(\),它们必须被传入,但它们通过Web API验证被转义 我想我在C#类中缺少so属性,但我还没有找到它 请求: 答复: 模型I反序列化为: 如果接受密码中的文字反斜杠(\),则需要使用 \\ (Backslash character) 其他特殊性质 \b Backspace (ascii code 08
currentPassword
、newPassword
和newPasswordConfirmation
的json数据
我遇到了一个问题,因为我想接受密码中的文字反斜杠(\
),它们必须被传入,但它们通过Web API验证被转义
我想我在C#类中缺少so属性,但我还没有找到它
请求:
答复:
模型I反序列化为:
如果接受密码中的文字反斜杠(\),则需要使用
\\ (Backslash character)
其他特殊性质
\b Backspace (ascii code 08)
\f Form feed (ascii code 0C)
\n New line
\r Carriage return
\t Tab
\" Double quote
然后bakend可以接收双反斜杠,因为反斜杠的特殊性,它必须成对出现。数据库中的反斜杠可以在变成字符串后直接进行比较
另一种方法是将数据放入formdata,它可以将所有字符序列化
public IActionResult change([FromForm]ChangePasswordModel changePasswordModel)
{
//...
return Ok(changePasswordModel);
}
因此,在发送json之前,所有API使用者都必须将\替换为\\with?这对我来说不是一个好的解决方案。@Max,除此之外,一个反斜杠不符合w3c协议。@Max,另一种方法是将formdata发送到bakend。@Max:你的意思是你想要的东西有点像JSON,但实际上不是JSON。您当前发送的不是有效的JSON。任何使用JSON库的客户端都不会有此问题。@Max:如果客户端发送的是有效的JSON,则不会有问题。但curl请求中显示的反斜杠后跟h是无效的JSON。如果您可以显示客户机实际发送的JSON,而不是curl请求,那么将更容易帮助您。。。现在感觉你只是被一个不合适的卷发要求误导了。如果您想在JSON文本中的字符串中表示反斜杠,就需要对其进行转义——就这么简单。(但客户机不需要手动执行此操作,除非它手动创建JSON。)
\\ (Backslash character)
\b Backspace (ascii code 08)
\f Form feed (ascii code 0C)
\n New line
\r Carriage return
\t Tab
\" Double quote
public IActionResult change([FromForm]ChangePasswordModel changePasswordModel)
{
//...
return Ok(changePasswordModel);
}