如何返回swagger-ui中使用的部分swagger规范

时间:2017-10-12 15:59:06

标签: json swagger swagger-ui

使用这个swagger-ui example来问这个问题,有没有办法请求一部分swagger规范的JSON而不是完整的东西?

例如,this url将完整的swagger规范作为该示例的JSON返回。我想知道是否有办法只请求pet资源的端点?

提前致谢。

2 个答案:

答案 0 :(得分:0)

最简单的方法是使用Swagger UI的filter选项按tags过滤显示的操作:

<!-- index.html -->

<style>
/* Optional - hide the filter box if needed */
.swagger-ui .filter-container {
  display: none
}
</style>

<script>
window.onload = function() {

  // Build a system
  const ui = SwaggerUIBundle({
    url: "http://petstore.swagger.io/v2/swagger.json",
    filter: "pet",  // <------
    ...

</script>


如果您特别想要改变实际的API定义文件(.yaml / .json),则需要实现能够实现此目的的服务器端逻辑。

答案 1 :(得分:0)

您可以编写包装动作updateSpec的statePlugin,实际上,您可以在此处修改您的swagger文件。

return {
  statePlugins: {
    spec: {
      wrapActions: {
        updateSpec: (oriAction) => {
          return (spec) => {
            const specObj = JSON.parse(spec);
            // filter or do whatever with your swagger spec here
            return oriAction(JSON.stringify(filteredSpec));
          };
        }
      }
    }
  }
};