Ответ "',' является недопустимым началом значения. Путь: $. In Asp. Net Core API - PullRequest
0 голосов
/ 09 июля 2020

Я разрабатываю API в Asp. Net Core 3.1, у меня есть метод 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."
        ]
    }
}

Ответы [ 2 ]

0 голосов
/ 09 июля 2020

json запроса неверен: вы должны передать что-то в качестве идентификатора страны:

{
    "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"
        }
    ]
}
0 голосов
/ 09 июля 2020
[RegularExpression("^[1-9]\\d*$", ErrorMessage = "Invalid fieldName.")]
public int countryId { get; set; }

сообщение об ошибке указано выше, но на самом деле json, которое вы отправляете, не может быть отправлено таким образом, вы должны установить

"countryId": null ,
...