我对宁静的服务很新,而且我刚刚实现了测试代码,以便在Swagger插件工作的同时获得ServiceStack休息服务,这引出了我的问题...
在swagger-ui / index.html里面有一个'api_key'字段。我知道变量名是umm ...变量,我也可以设置它,无论我喜欢什么,但我有点困惑它用于什么以及我是否应该使用它。
另外,如果我使用它,servicestack如何在服务器端向我显示该值?
这是测试服务我从文档中启动并运行...
[Api("Hello Web Services")]
[Route("/Hello", Summary = @"Noel's ServiceStackSwagger thingy", Notes = "Some more info in here cause these are notes")]
[Route("/Hello/{name}", Summary = @"N031'5 ServiceStackSwagger thingy", Notes = "Some more info in here cause these are notes", Verbs="GET,POST" )]
public class Hello
{
[ApiMember(Name = "Name", Description = "This is a description", ParameterType = "path", DataType = "string", Verb="GET,POST")]
public string Name { get; set; }
}
public class HelloResponse
{
public string Result { get; set; }
}
public class HelloService : Service
{
public object Any(Hello request)
{
return new HelloResponse { Result = "Hello, " + request.Name };
}
}
答案 0 :(得分:4)
回答我自己的Esker跟进请求,这里是如何使用API Key的东西......
public class HelloService : Service
{
public object Any(Hello request)
{
string api_key = this.Request.Headers["api_key"];
return new HelloResponse { Result = "Hello, " + request.Name };
}
}
但还需要一些额外的javascript将它包含在标题中(如swagger-ui / index.html内)......
$(function () {
$.ajaxSetup({
beforeSend: function (jqXHR, settings) {
jqXHR.setRequestHeader("api_key", $("#input_apiKey").val());
}
});
});
我在这个问题的答案中找到了......
How to get Swagger to send API key as a http instead of in the URL
答案 1 :(得分:3)
Swagger UI的一般概念是在发送给您的服务documented here的每个请求中提供api_key
。它可以作为查询字符串或标题值发送,您也可以更改参数的名称,如上面的链接所述。
如果您确实在ServiceStack服务中需要API密钥,则只需配置此项(例如,如果您有一个请求过滤器,可能会检查并验证API密钥)。
您可能需要在JavaScript代码中配置默认API密钥值以设置Swagger而不是让用户键入API密钥的原因是,只要index.html页面加载,它就会发送多个请求您的服务用于检索元数据,因此它希望知道在用户开始交互之前默认为这些元数据请求发送的API密钥值。