JsonResult в документации Swagger - PullRequest
       71

JsonResult в документации Swagger

0 голосов
/ 03 октября 2018

Я использую Swashbuckle для создания документации для моего ASP MVC Web API.Все отлично работает, кроме документации к JsonResult.Вот пример.У меня есть тестовый класс:

public class Test
{
    public string Testing { get; set; }
}

и метод в контроллере:

[HttpGet]
public JsonResult<Test> GetTest()
{
    Test test = new Test { Testing = "testing json" };

    return Json(test);
}

На основе этой конфигурации Swagger генерирует пример значения:

{
    "Content": {
        "Testing": "string"
    },
    "SerializerSettings": {
        "ReferenceLoopHandling": 0,
        "MissingMemberHandling": 0,
        "ObjectCreationHandling": 0,
        "NullValueHandling": 0,
        "DefaultValueHandling": 0,
        "Converters": [{
                "CanRead": true,
                "CanWrite": true
            }
        ],
        "PreserveReferencesHandling": 0,
        "TypeNameHandling": 0,
        "MetadataPropertyHandling": 0,
        "TypeNameAssemblyFormat": 0,
        "TypeNameAssemblyFormatHandling": 0,
        "ConstructorHandling": 0,
        "ContractResolver": {},
        "EqualityComparer": {},
        "ReferenceResolver": {},
        "ReferenceResolverProvider": {
            "Method": {},
            "Target": {}
        },
        "TraceWriter": {
            "LevelFilter": 0
        },
        "Binder": {},
        "SerializationBinder": {},
        "Error": {},
        "Context": {
            "m_additionalContext": {},
            "m_state": 1
        },
        "DateFormatString": "string",
        "MaxDepth": 0,
        "Formatting": 0,
        "DateFormatHandling": 0,
        "DateTimeZoneHandling": 0,
        "DateParseHandling": 0,
        "FloatFormatHandling": 0,
        "FloatParseHandling": 0,
        "StringEscapeHandling": 0,
        "Culture": "string",
        "CheckAdditionalContent": true
    },
    "Encoding": {
        "m_codePage": 0,
        "dataItem": {
            "m_dataIndex": 0,
            "m_uiFamilyCodePage": 0,
            "m_webName": "string",
            "m_headerName": "string",
            "m_bodyName": "string",
            "m_flags": 0
        },
        "m_isReadOnly": true,
        "encoderFallback": {
            "bIsMicrosoftBestFitFallback": true
        },
        "decoderFallback": {
            "bIsMicrosoftBestFitFallback": true
        }
    },
    "Request": {}
}

Чтоневерен.Я не хочу документацию для JsonResult, но только для моего Test класса.Как я могу это изменить?Как я могу сказать Swagger подготовить документацию только для Test класса?

1 Ответ

0 голосов
/ 04 октября 2018

Можно использовать SwaggerResponse, посмотрите на этот пример:

[SwaggerResponse(400, "Bad request")]
public class SwaggerAnnotatedController : ApiController
{
    [SwaggerResponseRemoveDefaults]
    [SwaggerResponse(HttpStatusCode.Created, Type = typeof(int))]
    [SwaggerResponse(HttpStatusCode.BadRequest, "Invalid message", typeof(HttpError))] 
    public int Create(Message message)
    {
        throw new NotImplementedException();
    }

Вот ссылка на проект:

https://github.com/domaindrivendev/Swashbuckle/blob/5489aca0d2dd7946f5569341f621f581720d4634/Swashbuckle.Dummy.Core/Controllers/SwaggerAnnotatedController.cs#L15

...