2013-03-20 2 views
3

Поддерживает ли Service Stack модели в Swagger. В примере кода нижеИнтерфейс Swagger и ServiceStack

[Route("/User", "GET", Summary = "Get all the users available")] 
[Route("/User", "POST, PUT", Summary = "Create a new user")] 
[Route("/User/{Id}", "GET", Summary = "Get user with a specific id")] 
public class User : RequestBase, IReturn<UserResponse> 
{ 
    [ApiMember(Name = "Id", Description = "The User Id", ParameterType = "path", DataType = "int", IsRequired = false)] 
    public int Id { get; set; } 

    [ApiMember(Name = "UserData", Description = "The User Data", ParameterType = "body", DataType = "complex", IsRequired = false)] 
    public UserData Entry { get; set; } 
} 

Я хотел бы UserData быть сложный тип или контейнер типа. Однако, если я определяю, что это один из них, все, что я получаю в SwaggerUI, является текстовым полем. Я не получаю ссылки Model и ModelSchema, которые я вижу в примере для домашних животных в Интернете.

http://petstore.swagger.wordnik.com/#!/pet/addPet_post_1

ответ

1

Параметры типа «тела» правильно поддерживается в последних версиях ServiceStack. Вам нужно будет установить DataType = "User" в свой второй атрибут ApiMember. Это позволит пользовательскому интерфейсу Swagger корректно отображать информацию о схеме модели. Кроме того, для простых типов вы можете использовать константы в классе SwaggerType; например, вы можете изменить первый атрибут Apimember на DataType = SwaggerType.Int.