响应“',' 是值的无效开始。路径:$。在 Asp.Net Core API 中

Posted

技术标签:

【中文标题】响应“\',\' 是值的无效开始。路径:$。在 Asp.Net Core API 中【英文标题】:Response "',' is an invalid start of a value. Path: $. in Asp.Net Core API响应“',' 是值的无效开始。路径:$。在 Asp.Net Core API 中 【发布时间】:2020-10-29 18:59:13 【问题描述】:

我在 Asp.Net Core 3.1 中开发 API,下面有一个 POST 方法(内容类型为application/JSON),我故意将无效的 JSON 传递给响应,响应也很清楚。但在这里我的问题是我可以进行更改以返回类似的响应

countryId 是必填字段

对于这种特殊情况。请让我知道是否可以完成,否则,我也可以接受此响应(因为此响应也是有效的,首先检查内容类型是否为有效的 JSON)。

方法:

public ActionResult ValidateFields(ValidateFieldsRequest validateFieldsRequest)
        

请求类:

public class ValidateFieldsRequest

    //string currencyCode, int countryId, string fieldName, string fieldValue

    [Required]
    public string currencyCode  get; set; 
    [Required]
    [RegularExpression("^[1-9]\\d*$", ErrorMessage = "Invalid fieldName.")]
    public int countryId  get; set; 
    [Required]
    [MinLength(1, ErrorMessage = "At least one field required")]
    public List<Field> fields  get; set; 


请求:


    "currencyCode": "RUB",
    "countryId": ,
    "fields": [
            "fieldName": "BIC or Bank Code",
            "fieldValue": "12345678901234567"
        ,
        
            "fieldName": "Beneficiary Account Number",
            "fieldValue": "123456"
        
    ]

回应:


    "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
    "title": "One or more validation errors occurred.",
    "status": 400,
    "traceId": "|6a64d7ad-495850db788356cd.",
    "errors": 
        "$.countryId": [
            "',' is an invalid start of a value. Path: $.countryId | LineNumber: 2 | BytePositionInLine: 28."
        ]
    

【问题讨论】:

【参考方案1】:
[RegularExpression("^[1-9]\\d*$", ErrorMessage = "Invalid fieldName.")]
public int countryId  get; set; 

上面设置了错误信息,但实际上你发送的json不能这样发送,你应该设置

"countryId": null ,

【讨论】:

我说的是这个案子,如果我收到"countryId": ,这样的请求怎么办 其实我从来没有看到前端开发者的请求没有设置指定字段的值,否则他会删除整个字段。尝试从您的 json 中删除该字段 假设您对请求没有任何控制权,并且客户端正在向您发送此数据 亲爱的你不能把“countryId”留空,你必须给它设置一个值 那么请联系你的客户,和他商量一下【参考方案2】:

请求的 json 不正确:您必须传递一些东西作为国家/地区 ID:


    "currencyCode": "RUB",
    "countryId": "",
    "fields": [
            "fieldName": "BIC or Bank Code",
            "fieldValue": "12345678901234567"
        ,
        
            "fieldName": "Beneficiary Account Number",
            "fieldValue": "123456"
        
    ]


    "currencyCode": "RUB",
    "countryId": null,
    "fields": [
            "fieldName": "BIC or Bank Code",
            "fieldValue": "12345678901234567"
        ,
        
            "fieldName": "Beneficiary Account Number",
            "fieldValue": "123456"
        
    ]

【讨论】:

假设您对请求没有任何控制权,并且客户端正在向您发送此数据 那么客户端将不会得到任何响应,但会出现该错误,因为 json 不正确。客户端至少应该发送一个语法正确的 json。

以上是关于响应“',' 是值的无效开始。路径:$。在 Asp.Net Core API 中的主要内容,如果未能解决你的问题,请参考以下文章

HttpServletResponse ServletResponse 返回响应 设置响应头设置响应正文体 重定向 常用方法 如何重定向 响应编码 响应乱码

响应式编程与响应式系统

HttpServletResponse ServletResponse 返回响应 设置响应头设置响应正文体 重定向 常用方法 如何重定向 响应编码 响应乱码

什么是响应式网站及其特点

Java中响应结果工具类,可自定义响应码,内容,响应消息

可变的实时数据给出多个响应,给出来自 api 的旧响应,然后给出新的响应