我正在使用Swashbuckle库.目前没有stackoverflow标记.
我不太明白这里的文档:https://github.com/domaindrivendev/Swashbuckle/blob/master/README.md
标题为"描述安全/授权方案"的部分提到了一段代码
c.ApiKey("apiKey")
.Description("API Key Authentication")
.Name("apiKey")
.In("header");
Run Code Online (Sandbox Code Playgroud)
然而,当我包括这个没有任何反应.我还希望这只出现在某些API方法上.确实提到了
"需要在文件中加上相应的"安全"财产"
但我不明白这一点.
谁能解释一下?
我有一个WebAPI端点,它实现了两个不同版本的API(旧版和新版).旧端点使用特定的串行器,该序列化器将所有对象序列化为带有下划线的小写字,v2端点使用驼峰式属性名称.例如,V1 ="document_type",V2 ="documentType"
目前使用控制器特定属性来定义序列化,如下所示:
public class CamelCaseControllerConfiguration : Attribute, IControllerConfiguration
{
public void Initialize(HttpControllerSettings controllerSettings, HttpControllerDescriptor controllerDescriptor)
{
controllerSettings.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
controllerSettings.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new StringEnumConverter());
}
}
Run Code Online (Sandbox Code Playgroud)
当通过REST从客户端调用时,这一切都正常,但Swagger生成的文档始终使用旧的序列化器设置显示属性名称.有关配置swashbuckle以正确序列化每个版本的任何建议吗?
我有一个Web API,它是一个非常薄的基础结构,只包含两个DelegatingHandler实现,它们将传入的消息分派给业务层中定义的消息处理程序实现.这意味着没有控制器,也没有控制器动作; API仅基于消息定义.这意味着在实现新功能时,不需要此基础结构层中的代码更改.
例如,我们有以下消息:
委托处理程序根据url确定确切的消息,并将请求内容反序列化为该消息类型的实例,之后该消息将转发到相应的消息处理程序.例如,这些消息(当前)映射到以下URL:
可以想象,这种使用Web API的方式简化了开发并提高了开发性能; 编写的代码更少,测试代码更少.
但由于没有控制器,我在Swashbuckle中引导这个问题; 阅读完文档后,我没有找到在Swashbuckle中注册这些网址的方法.有没有办法以这样的方式配置Swashbuckle它仍然可以输出API文档?
为了完整起见,可以在此处找到演示此内容的参考架构应用程序.
我在ASP.NET Web API上使用Swashbuckle和Swagger.我正在尝试通过Swagger UI找到一种传递包含Bearer令牌的Authorization标头的方法.我一直在寻找,但所有答案似乎都指向了这个链接.
但是,这假定标题的内容是预先知道的.我真的需要一种方法来改变Swagger UI中的标题(在点击'试一试!'按钮之前),因为Bearer令牌每小时都会到期.类似于Postman允许您添加标题的方式.
这似乎是一个如此荒谬的简单问题,但答案是什么?
在你想到它之前,这是不一样的.
我认为这应该是非常自我解释的.我想在Swagger文档中包含类描述.我的Swagger配置如下所示:
config.EnableSwagger(c =>
{
c.SingleApiVersion("v1", "My Api Name");
c.OperationFilter<AddAuthorizationHeaderParameterOperationFilter>();
c.IncludeXmlComments(GetXmlCommentsPath());
}).EnableSwaggerUi(c => { });
Run Code Online (Sandbox Code Playgroud)
而且MyAwesomeController看起来是这样的:
/// <summary>
/// Controller description (is included by Swashbuckle)
/// </summary>
public class MyAwesomeController : ApiController
{
/// <summary>
/// Method description (is included by Swashbuckle)
/// </summary>
public IHttpActionResult Get()
{
return Ok("hello... from the other side");
}
public IHttpActionResult Post([FromBody]MyAwesomeModel model)
{
return Ok("hello... from the other side");
}
}
Run Code Online (Sandbox Code Playgroud)
我MyAwesomeModel看起来像这样:
/// <summary>
/// …Run Code Online (Sandbox Code Playgroud) 我目前在我的项目中使用招摇,我在那里有超过100个控制器.我想由于控制器数量众多,swagger UI文档页面需要超过5分钟才能加载其控制器.是否可以在UI页面中选择特定控制器并仅为它们加载选项?或者还有其他方法可以更快地加载UI页面?帮我!
请帮助我,一开始看起来很容易,现在我在项目中迟到了:
我正在尝试为Swager和ASP.NET WebApi项目设置API版本.API版本控制正常,调用不同的版本会返回正确的结果(见下文).
相反,Swagger无法为这两个版本提供服务.在调试时,我注意到当c.MultipleApiVersions(...)在SwaggerConfig.cs中调用时,报告的控制器apiDesc.ActionDescriptor.ControllerDescriptor总是PingController从不Ping11Controller.
有人可以指出要解决这个问题需要做些什么,并且Swagger也适用于这两个版本?
下面,API版本的代码和证明工作正常,而Swagger仅适用于v1.0.
谢谢!
Swagger for v1.0很好: (http:// localhost:50884/v1.0/swagger)
{
"swagger":"2.0",
"info":{
"version":"v1.0",
"title":"My API v1.0"
},
"host":"localhost:50884",
"schemes":[
"http"
],
"paths":{
"/api/ping":{
"get":{
"tags":[
"Ping"
],
"summary":"Get a pong.",
"operationId":"GetAPong",
"consumes":[
],
"produces":[
"application/json",
"text/json",
"application/xml",
"text/xml"
],
"responses":{
"200":{
"description":"OK"
},
"404":{
"description":"NotFound"
}
}
}
}
},
"definitions":{
}
}
Run Code Online (Sandbox Code Playgroud)
Swagger for v1.1为空: (http:// localhost:50884/v1.1/swagger)
{
"swagger":"2.0",
"info":{ …Run Code Online (Sandbox Code Playgroud) 使用属性路由时,是否可以在Swagger UI/Swashbuckle中利用MultipleApiVersions?
具体来说,我实现了版本控制:
using System.Web.Http;
namespace RESTServices.Controllers.v1
{
[Route("api/v1/Test")]
public class TestV1Controller : ApiController
{ ... }
Run Code Online (Sandbox Code Playgroud)
版本2将位于v2名称空间中.在名为TestV2Controller的控制器中.路线中有v2.
是否可以传递一个lambda,这将允许这个?我在网上发现了一个编译的lambda样本,但随后Swagger完全停止了工作.无法在浏览器中点击断点或看到Swagger.
json使用Microsoft 的教程在我的 Web API 项目中获取文件没有问题。
由于某些要求,我希望能够检索yaml文件。但问题是我找不到任何钩子来使这成为可能。
有谁知道这个问题的任何解决方法?
根据标题 - 我已经找到了如何使用常规.NET执行此操作的示例
例如: Web Api如何为Swagger中的所有API添加Header参数
但是,我找不到任何示例或文档,显示如何在使用.NET Core 2.0时完成相同的操作.
swagger ×10
swashbuckle ×10
c# ×6
swagger-ui ×4
.net-core ×1
asp.net ×1
attributes ×1
openapi.net ×1
owin ×1