简体   繁体   中英

Is it possible to show request body objects in the parameters section of Swagger UI?

I am using Swashbuckle with my .Net Core Web API project. I have some GET and POST requests, as usual.

Here's an example:

/// <summary>
/// Test request
/// </summary>
[HttpPost("Test")]
[Consumes("application/json")]
[Produces("application/json")]
[SwaggerResponse(200, "Request Executed", typeof(ResponseObject))]
public IActionResult Test([FromBody] TestObject t)
{
    var response = new ResponseObject
    {
        Id = t.Id,
        Name = t.Name,
    };

    return Content(response.JsonSerialize());
}

Used objects:

/// <summary>
/// An example object
/// </summary>
public class TestObject
{
    /// <summary>
    /// Object ID
    /// </summary>
    public string Id { get; set; }

    /// <summary>
    /// Object name
    /// </summary>
    public string Name { get; set; }
}

/// <summary>
/// An example object
/// </summary>
public class ResponseObject
{
    /// <summary>
    /// Object ID
    /// </summary>
    public string Id { get; set; }

    /// <summary>
    /// Object name
    /// </summary>
    public string Name { get; set; }
}

And here's the result:文本


What am I expecting to see is a deserialized object in "Parameters" section, as I saw in some other Swagger/Swashbuckle samples (Petstore, for example). Or, at least, something like in OpenAPI v2 specification with `c.SerializeAsV2 = true;`:

文本

So, the question is, is it possible to display a deserialized object in "Parameters" section?

Since you're using an object & not query string parameters, TestObject 's properties won't be displayed separately as an object is encapsulating.

Having separate fields are for query string parameters.

You can create custom Swagger layouts to display data however you'd like but I'd recommend to keep it as it is, to fall in line with common expectations of the Swagger UI.

Also feel free to have a combination of both; that would also work.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM