我不知道我问的是否可能。但是我有几个 API,总共有大约 100 个端点。我们正在配置 API 以使用 Ocelot 网关,我想知道是否有一种有效的方法来生成 ocelot.json 下游设置。由于我们已经生成了 swagger 文档,是否有一个库/包可以用来使用 swagger 文档生成下游 URL?
MMLib SwaggerForOcelot 扩展提供了一种更好的方式来记录您的下游端点。他们使用密钥来识别 ocelot 文件中的 API。也可以参考这篇文章.
您可以使用 Swagger 页面为所有端点生成路由。
运行你的项目,让它在浏览器中打开。
打开开发者模式(例如,通过检查元素)。
在控制台中运行以下命令:
var routes = [];
//import jquery first.
script = document.createElement('script');
script.onload = function() {
// jQuery is available now
generateAllroutes();
};
script.type = 'text/javascript';
script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js?v=24';
var head = document.getElementsByTagName('head')[0];
head.appendChild(script);
function generateAllroutes() {
//expanding all nodes
$('.opblock-tag.no-desc').trigger('click');
function camelize(str) {
return str.replace(/(?:^\w|[A-Z]|\b\w)/g, function(word, index) {
return index === 0 ? word.toLowerCase() : word.toUpperCase();
}).replace(/\s+/g, '');
}
function capitalize(word) {
return word.charAt(0).toUpperCase() + word.slice(1);
}
var listOpaths = $('.opblock-summary-path');
for (var i = 0, len = listOpaths.length; i < len; i++) {
var pp = $(listOpaths[i]);
var path = pp.attr('data-path');
var method = capitalize(pp.parent().find('.opblock-summary-method').text());
routes.push({
"DownstreamPathTemplate": path,
"DownstreamScheme": "https",
"DownstreamHostAndPorts": [{
"Host": "localhost",
"Port": 44338
}],
"UpstreamPathTemplate": path,
"UpstreamHttpMethod": [method]
});
}
}
然后路由将在路由数组中。