如何使用SwaggerGenerateOptions(CORS)对于我们开发的项目,我们会自动生成Swagger文件。但现在我们正在努力处理CORS部分。我们正在使用AmazonAPI网关导入apifunction。要与Swagger和CORS一起使用,我们必须在源代码中创建一个额外的操作(操作),允许每个api方法(操作)使用CORS(选项)!例如:[HttpOptions][Route("{id}")][ProducesResponseType((int)HttpStatusCode.OK)]publicIActionResultUserOptions(){returnnewOkResult();}如您所见,这会使代码变得更脏。这是一个临时修复,但我们找不到其他方法。有没有办法在swagger定义文件中自动生成这个?或者我们如何做到这一点,AmazonAPIGateway需要这个(文档:http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-cors.html)你可以通过x-amazon-apigateway-集成swagger扩展以驱动api网关。使用Swashbuckle文档过滤器,您可以在所有路径上生成选项操作,而无需在控制器中实现相应的操作。这是一个示例代码,它将为您的招摇中的所有路由生成选项操作,并添加使用招摇扩展在api网关中为这些OPTION方法生成模拟:publicclassAddCorsApiGatewayDocumentFilter:IDocumentFilter{Description="成功操作",Headers=newDictionary{{"Access-Control-Allow-Origin",newHeader(){Type="string",Description="可以访问资源的URI"}},{"Access-Control-Allow-Methods",newHeader(){Type="string",Description="访问资源时允许的方法"}},{"Access-Control-Allow-Headers",newHeader(){Type="string",Description="用于响应预检请求以指示在发出请求时可以使用哪些HTTP标头。"}},}};returnnewOperation{Consumes=newList{"application/json"},Produces=newList{"application/json"},Responses=newDictionary{{"200",response}}};}privateobjectBuildApiGatewayIntegrationExtension(){返回新的{响应es=new{@default=new{statusCode="200",responseParameters=newDictionary{{"method.response.header.Access-Control-Allow-Methods","'POST,GET,OPTIONS'"},{"method.response.header.Access-Control-Allow-Headers","'Content-Type,X-Amz-Date,Authorization,X-Api-Key'"},{"method.response.header.Access-Control-允许来源","'*'"}}},},passthroughBehavior="when_no_match",requestTemplates=newDictionary{{"application/json","{"statusCode":200}"}},type="mock"};}publicvoidApply(SwaggerDocumentswaggerDoc,DocumentFilterContextcontext){foreach(varpathinswaggerDoc.Paths){varcorsOptionOperation=BuildCorsOptionOperation();varawsApiGatewayExtension=BuildApiGatewayIntegrationExtension();corsOptionOperation.Extensions.Add("x-amazon-apigateway-integration",awsApiGatewayExtension);path.Value.Options=corsOptionOperation;}}}不要忘记在swashbuckle中注册该filter:publicvoidConfigureServices(IServiceCollectionser恶习){services.AddMvc();services.AddSwaggerGen(c=>{c.SwaggerDoc("v1",newInfo{Title="MyAPI",Version="v1"});c.DocumentFilter();});}在控制台使用简单的一键式功能执行“启用CORS”的步骤,然后部署API,最后上台把API导入回swagger现在可以inspectswagger看看自己的swagger如何配置CORS。我遇到了同样的问题,最后我用Java创建了一个实用程序,它会自动将这些标头添加到SwaggerJSON中。您可以在将其导入APIGateway之前运行它,并在所有方法中启用CORS的情况下导入输出JSONhttps://github.com/anandlalvb/SwaggerToAPIGateway将这些标头添加到SwaggerJSON中的所有方法是一项繁琐的工作。“标题”:{“访问控制允许来源”:{“类型”:“字符串”},“访问控制允许方法”:{“类型”:“字符串”},“访问控制-Allow-Headers":{"type":"string"}}我希望这个实用程序可以帮助你轻松地做到这一点每个人都很有用,需要了解更多有关C#的学习教程。希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
