2017-02-17 18 views
1

Есть ли способ заставить валидаторы проверки сервисов использовать плавный плагин проверки, чтобы испускать свойства имени поля в случае верблюда? Я настроенМожет ли ServiceStack Validator испускать имена полей в случае с верблюдом?

JsConfig.EmitCamelCaseNames = true; 

так, что мои типы машинописи в ГорбатыйРегистр, но все сообщения проверки/ошибки приходят через в PascalCase. Я бы очень хотел сохранить camelCase в своих ответах json, но я бы точно хотел, чтобы имена полей совпадали с именами полей сообщения об ошибках. Это возможно?

ответ

0

Не совсем следующее, когда EmitCamelCaseNames = true возвращаемый JSON использует CamelCase имена свойств, но данные остаются в PacalCase совпасть с запросом DTO имен свойств, например:

{ 
    "responseStatus": { 
    "errorCode": "InclusiveBetween", 
    "message": "'Age' must be between 1 and 120. You entered 0.", 
    "errors": [ 
     { 
     "errorCode": "InclusiveBetween", 
     "fieldName": "Age", 
     "message": "'Age' must be between 1 and 120. You entered 0.", 
     "meta": { 
      "PropertyName": "Age", 
      "From": "1", 
      "To": "120", 
      "Value": "0" 
     } 
     } 
    ] 
    } 
} 

Что JSON ответ имеет вопрос?

+0

Ну, все ответы JSON, у которых есть ошибки проверки, имеют эту проблему с именем поля и метазначением PropertyName в папке Pascal. Это просто раздражение при использовании dtos от клиента javascript в браузере. У нас есть соглашение о кодировании для использования объектов camelCased, поэтому мы выбрасываем все наши типы в camelCase, поворачивая EmitCamelCaseNames == true. Нам также необходимо поддерживать клиентов C#, поэтому я могу понять, почему это может быть нехорошо глобально изменять имена свойств в данных на pascal case. Нам просто нужно отказаться от нашего стандарта кодирования и жить с PascalCase в dtos. – on3al

+0

@ on3al Соглашение camelCase просто затрагивает имена свойств, оно не влияет на данные, содержащиеся в нем. Это дело Паскаля в [Мета-словаре] (https://github.com/ServiceStack/ServiceStack/blob/8ecf9df8c19b55c3b5a76341f29215b37d6d0a9c/src/ServiceStack.Interfaces/ResponseStatus.cs#L73), потому что это словарь, а ключ - это также данные. – mythz