我的ServiceStack w/Swagger实现有关于记录必需/可选属性的问题.实现使用我的服务的客户端的开发人员喜欢Swagger文档,但是他们不知道哪些属性是必需的而且是可选的 - 除了每次尝试获得有效请求时都获得400响应.
请看以下示例:
public class UserProfile
{
public string FirstName { get; set; }
public string LastName { get; set; }
public UserAddress Address { get; set; }
}
public class UserAddress
{
public string AddressLine1 { get; set; }
public string AddressLine2 { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Zip { get; set; }
public string Country { get; set; }
public string PhoneNumber …Run Code Online (Sandbox Code Playgroud) 关于泛型类型响应对象的文档,我遇到了Swagger的ServiceStack实现的问题.强类型响应对象被正确记录和显示,但是一旦使用泛型类型对象作为响应,文档就不准确并且会产生误导.
请求DTO
[Route("/users/{UserId}", "GET", Summary = "Get a specific User Profile")]
public class GetUser : IReturn<ServiceResponse<UserProfile>>
{
[ApiMember(Description = "User Id", ParameterType = "path", IsRequired = true)]
public int UserId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
回复DTO
public class ServiceResponse<T> : IServiceResponse<T>
{
public IList<string> Errors { get; set; }
public bool Successful { get; set; }
public string Message { get; set; }
public string StackTrace { get; set; }
public T Data { get; set; }
public ServiceResponse()
{ …Run Code Online (Sandbox Code Playgroud) 在Html.EnumDropDownListForMVC 5.1中使用新的扩展方法时,我遇到的问题是,根据我传递给控制器操作的路由属性,下拉列表中的所选值没有更新.
视图
@model MemberReconWebDemo.Models.EnvironmentsModel
@{
ViewBag.Title = "Environments";
}
<h2>Environments</h2>
<div class="row">
<div class="col-md-12">
@Html.EnumDropDownListFor(p => p.Environment)
@Model.Environment.ToString()
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
控制器动作
[Route("environments/{environment?}")]
public ActionResult Environments(string environment)
{
Domain.Environment env;
Enum.TryParse(environment, true, out env);
return View(new EnvironmentsModel{Environment = env});
}
Run Code Online (Sandbox Code Playgroud)
如果我导航到没有可选属性的路由,并且我Model.Environment在控制器操作中将属性设置为静态值,则该选定值显示没有问题.
如果我传入一个有效的路由属性值,将其分配给Model.Environment属性,则在呈现时下拉列表不会更新为属性值 - 即使我已确认该属性的值不是默认的枚举值.