在给定的示例代码中,元数据页面永远不会获得
中指定的描述[Description("GET account, all or by list of groups or by list of logins")]
是否需要设置特殊配置才能使描述显示在元数据页面中?
代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using ServiceStack.ServiceHost;
using System.Runtime.Serialization;
using ServiceStack.WebHost.Endpoints;
namespace ConsoleApplication2
{
public class User
{
public User()
{
}
public int login;
public string group;
public string name;
}
[Description("GET account, all or by list of groups or by list of logins")]
[Route("/accounts")]
public class Accounts : IReturn<List<User>>
{
public string[] groups { set; get; }
public int[] logins { set; get; }
public Accounts() { }
public Accounts(params int[] logins)
{
this.logins = logins;
}
public Accounts(params string[] groups)
{
this.groups = groups;
}
}
public class Host : AppHostHttpListenerBase
{
public Host() : base("Test",
typeof(Accounts).Assembly)
{
}
public override void Configure(Funq.Container container)
{
SetConfig(new EndpointHostConfig {
EnableFeatures = Feature.All
});
}
}
public class Servce : IService
{
public object Get(Accounts request)
{
return new List<User>(){new User()};
}
}
class Program
{
static void Main(string[] args)
{
var host = new Host();
host.Init();
host.Start("http://+:12345/");
Console.ReadLine();
}
}
}
导航到http://localhost:12345/json/metadata?op=Accounts
生成
<body>
<a id="logo" href="http://www.servicestack.net" title="servicestack"></a>
<h1>Test</h1>
<form>
<div>
<p><a href="/metadata"><back to all web services</a></p>
<h2>Accounts</h2>
<div class="example">
<!-- REST Examples -->
...
答案 0 :(得分:4)
在recent release of ServiceStack中,[Description]
已弃用,而[Api]
和[ApiMember]
也用于ServiceStack's Swagger support。
现在这是一个完全注释的服务示例:
[Api("Service Description")]
[Route("/swagger/{Name}", "GET", Summary = @"GET Summary", Notes = "GET Notes")]
[Route("/swagger/{Name}", "POST", Summary = @"POST Summary", Notes = "POST Notes")]
public class MyRequestDto
{
[ApiMember(Name="Name", Description = "Name Description",
ParameterType = "path", DataType = "string", IsRequired = true)]
public string Name { get; set; }
}