使用GraphQL生成API文档

GraphiQL 是一个非常流行的交互式开发环境(IDE),专门用于浏览、编写和测试 GraphQL 查询。它不仅可以帮助你查询 API,还可以自动生成文档。以下是如何使用 GraphiQL 的具体步骤:

仓库地址:https://github.com/anvilco/spectaql?tab=readme-ov-file#yaml-options

1. GraphiQL 安装与配置

方式 : 本地或全局安装 GraphiQL

如果你的 GraphQL API 服务器没有内置 GraphiQL,你可以使用独立的 GraphiQL 框架或包。

  1. 全局安装 GraphiQL
    如果你想在本地环境使用 GraphiQL,你可以通过 npmyarn 安装:
    如果下载不成功可以使用淘宝镜像源

    npm install -g graphiql
  2. 通过 npm 或 Yarn 安装为开发依赖
    你也可以将 GraphiQL 作为开发依赖安装到项目中:

    npm install graphiql
  3. 生成您的文档!

    npx spectaql config.yml

    运行此命令你需要一份config.yml文件。具体使用参考https://github.com/anvilco/spectaql?tab=readme-ov-file#yaml-options

2. 使用JSON格式生成文档

生成或导出 schema 文件

  1. 自动生成 schema
    如果你使用的是 Java 类和注解方式定义的 GraphQL API(使用 @GraphQLQuery 等注解),GraphQL schema 通常在运行时生成。你可以使用 Spring Boot 启动后访问 GraphQL endpoint 来手动导出 schema。

    • 访问 GraphQL Endpoint:在应用运行时,GraphQL API 通常暴露在 /graphql 路径下。你可以通过 introspection 查询导出完整的 GraphQL schema。

    下面是一个 introspection 查询的示例,它可以帮助你获取 schema:这个查询可根据文档需要动态调整。查询http://127.0.0.1:8091/pamirs/graphql

    query IntrospectionQuery {
     __schema {
       queryType { ...FullType }
       mutationType { ...FullType }
       subscriptionType { name }
       types {
         ...FullType
       }
       directives {
         name
         description
         locations
         args {
           ...InputValue
         }
       }
     }
    }
    
    fragment FullType on __Type {
     kind
     name
     description
     fields(includeDeprecated: true) {
       name
       description
       args {
         ...InputValue
       }
       type {
         ...TypeRef
       }
       isDeprecated
       deprecationReason
     }
     inputFields {
       ...InputValue
     }
     interfaces {
       ...TypeRef
     }
     enumValues(includeDeprecated: true) {
       name
       description
       isDeprecated
       deprecationReason
     }
     possibleTypes {
       ...TypeRef
     }
    }
    
    fragment InputValue on __InputValue {
     name
     description
     type { ...TypeRef }
     defaultValue
    }
    
    fragment TypeRef on __Type {
     kind
     name
     ofType {
       kind
       name
       ofType {
         kind
         name
         ofType {
           kind
           name
           ofType {
             kind
             name
             ofType {
               kind
               name
             }
           }
         }
       }
     }
    }

    你可以将这个查询放在 GraphiQL(开发工具)或者 Postman 等工具中,发送请求到 /graphql,这样可以获得完整的 schema。

将请求的响应保存为JSON文件,在config.yml中配置。配置参考:https://github.com/anvilco/spectaql/blob/main/config-example.yml

spectaql:
  # Optional path to the target build directory.
  # Set to null to not write the output to the filesystem, making it only available via the API (default: public)
  #
  # Default: public
  targetDir: /Users/mmy/Desktop
  themeDir: /Users/mmy/Desktop

introspection:
  # File containing a GraphQL Schema Definition written in SDL.
  # Can also pass an array of paths (or glob supported by @graphql-tools/load-files)
  # like so:
  # schemaFile:
  #   - path/to/schema/part1.gql
  #   - path/to/schema/part2.gql
#  schemaFile: /Users/mmy/Desktop/schema2.graphql

  # File containing Introspection Query response in JS module export, or JSON format
  introspectionFile: /Users/mmy/Documents/response2.json
#
  # URL of the GraphQL endpoint to hit if you want to generate the documentation based on live Introspection Query results
  # NOTE: If not using introspection.url OR servers[], you need to provide x-url below
#  url: 'http://127.0.0.1:8091/pamirs/graphql'

extensions:
  # Utilize the 'graphql-scalars' library when generating examples for scalars it supports that
  # do not have an example already set via some other method. Usually this is a good
  # thing to have on, but it is possible to turn it off.
  # Default: true
  graphqlScalarExamples: true

servers:
  - url: http://127.0.0.1:8091/pamirs/base

运行命令npx spectaql config.yml就可以得到一份html的API文档啦!

作者注:这行命令生成文档的执行时间和文件大小息息相关。平台接口执行时间大概1-2小时,只要没报错请耐心等待!

Oinone社区 作者:yexiu原创文章,如若转载,请注明出处:https://doc.oinone.top/chan-pin-shi-yong-shou-ce/17412.html

访问Oinone官网:https://www.oinone.top获取数式Oinone低代码应用平台体验

(0)
yexiuyexiu
上一篇 2024年9月12日 pm10:18
下一篇 2024年9月18日 pm12:52

相关推荐

  • 新版权限操作手册(5.0以上)

    一 整体介绍 1. 角色类型: 为了更好地管理和控制平台中的不同用户,权限系统将对角色进行分类定义。通过角色分类,可以更高效地管理同一类角色,无需单独操作每个角色,实现统一管理。 2. 角色管理: 角色管理是权限系统中的一个基础功能,负责管理具体角色的创建、编辑和禁用,以及对角色的单独操作。 3. 系统权限: 可配置某个应用或其下的某个菜单、某个应用的首页的管理权限和访问权限。 管理权限:赋予某角色后,该角色具备向下分配权限的能力。 访问权限:赋予某角色后,该角色可进行访问。访问权限可配置多个权限组,不同权限组可授权给不同角色。 注: 此处应用下的“首页”菜单是在【应用中心-设置首页-绑定视图】中配置的视图。权限控制是针对这个视图进行的。只有当在设置首页时选择了绑定视图,应用下才会有对应的“首页”菜单;否则,该菜单将不可见。 当【应用中心-设置首页-绑定菜单】只需单独为应用下的某个菜单进行授权即可。 拥有访问权限并不代表拥有管理权限,同理,拥有管理权限也不代表拥有访问权限。这两种权限需要单独授权。二者并无直接关系。 4. 数据权限项和数据权限: 数据权限项:通过为某个模型配置过滤条件来定义特定的数据访问规则,但这些规则不会立即生效。它们需要与数据权限配合使用,以实现精细化的数据访问权限控制。 数据权限:为多个角色应用指定多个数据权限项,类似于系统权限的管理,但其范围更广泛,涵盖了对所有模块的授权。 通过数据权限项定义具体的访问规则,再通过数据权限将这些规则分配给不同的角色,以实现全面的权限控制。 二 操作手册 2.1 创建用户、绑定角色 创建一个名为testName的用户。 2.1.2 用户与角色的绑定(3种方式) 2.1.2.1 创建用户时为其单个或批量绑定角色 在创建用户页面进行添加绑定的角色,勾选完成,点击“确定”,完成角色的添加。 2.1.2.2 修改用户时为其单个或批量绑定角色 在修改用户页面进行添加绑定的角色,勾选完成,点击“确定”,完成角色的添加。 2.1.2.3 选择指定用户为其单个或批量绑定角色 指定用户后点击绑定角色,进行绑定的角色。 2.2 应用的授权–访问权限 访问权限是指将特定应用程序授权给相应的角色,一旦用户被分配到这些角色,他们将获得访问该应用程序的权限。确保了只有经过认证的用户才能访问特定的应用功能或数据。 2.2.1 应用与角色的授权–访问权限 选择系统权限,点击某个想要为其授权的应用。 添加角色,点击“确定”按钮,为应用授权。 授权成功,显示可以访问此应用的角色。 2.2.2 菜单与角色的授权–访问权限 选中系统权限,点击某个想要为其授权的菜单,为其添加权限组。 配置权限组,保存配置。 为权限组授权对应的角色。 授权成功,显示可以访问此菜单的角色。 2.2.3 批量授权–访问权限 我们支持对单个或多个应用程序及其菜单执行批量授权操作,以授予相应的访问权限。 角色权限访问: 角色未被授予应用的访问权限时,即使授予了菜单权限也无法访问。 角色被授予应用访问权限但未被授予菜单权限时,仍然无法访问菜单。 只有当角色同时被授予应用和菜单的权限时,才能访问相关菜单。 批量授权: 该功能仅作为添加角色至应用或菜单配置访问权限的入口。 批量授权: 在批量授权过程中,平台会自动创建一个默认权限组,这个权限组赋予了用户管理所有数据和当前菜单下所有管理权限的能力。这个默认权限组的创建会根据不同的平台版本进行区分处理。 在5.0.4版本之前,平台在创建默认权限组时,并不会自动勾选动作权限。 从5.0.4版本开始,包括5.0.4版本在内,平台会自动勾选所有动作权限,简化了授权流程。 值得注意的是,默认权限组在首次创建时遵循当时的动作权限规则。如果后续进行多次批量授权,平台不会重新创建默认权限组,而是保留之前的设置。因此,即使在后续的批量授权过程中,动作权限也会保持之前的状态。 总结来说,批量授权时,平台会根据版本自动创建带有或不带有动作权限的默认权限组,且该默认权限组在多次授权过程中保持不变,不会随每次授权而更新其动作权限设置。 找到系统权限菜单,点击批量配置。 选择单个或多个应用为其添加访问权限,点击添加角色进行添加操作。 进入添加角色页面。 选择需要添加的角色,点击“确定”按钮,完成角色的授权。 在批量授权过程中,添加角色框中的角色将被视为本次批量授权的角色。 此时完成批量授权,点击取消批量即可。 验证是否批量授权成功:点击已经授权的应用下某一菜单,看到“管理所有数据”下有我们添加的“子管理员”。 2.3 应用的授权–管理权限 管理权限涉及将应用程序的管理功能授权给特定角色,例如“子管理员”。拥有管理权限的角色能够进一步授权其他用户管理权限,可以向下分配。通过这种方式,组织可以实施分级的管理结构,确保各级管理员能够有效地管理和分配资源。 注:如果要为应用授予管理权限,则该应用下的所有菜单也会被授予管理权限。此外,也可以单独为某个应用下的特定菜单授予管理权限。 2.3.1 应用与角色的授权–管理权限 选择系统权限,点击某个想要为其授予管理权限的应用。 进入添加角色页面。 添加可管理此应用的角色,点击“确定”,完成角色的授权。 授权成功,显示可以管理此应用的角色。 2.3.2 菜单与角色的授权–管理权限 选择系统权限,点击某个想要为其授予管理权限的菜单。 进入添加角色页面。 添加可管理此菜单的角色,点击“确定”,完成角色的授权。 授权成功,显示可以管理此菜单的角色。 2.2 实例:向下分配权限–子管理员 子管理员描述 管理权限向下分配能力:子管理员可以向下分配管理权限,包括向其他角色授予或取消某应用、菜单或首页的管理权限。 访问权限:子管理员被授予访问权限,可以访问平台中指定的应用、菜单或首页。 持续的管理权限向下分配:子管理员可以持续地向下分配管理权限,确保权限的适当控制和分配。 子管理员一定要为管理中心应用配置访问和管理权限。 2.2.1 创建一个名字为“子管理员”的角色 2.2.2 角色与用户的绑定 2.2.3 为子管理员分配应用的管理权限 如果要为应用授予管理权限,则该应用下的所有菜单也会被授予管理权限。此外,也可以单独为某个应用下的特定菜单授予管理权限。 应用管理权限的分配 选择系统权限,点击某个想要为其授予管理权限的应用。 进入添加角色页面。 添加可管理此应用的角色,点击“确定”,完成角色的授权。 授权成功,显示可以管理此应用的角色。 2.2.4 登录子管理员继续向下级分配权限 输入账号、密码,点击登录。 在上级角色中我们已经为“子管理员”角色,授权了管理中心的管理、访问权限和具体的某个应用的管理权限。 选择系统权限,点击某个想要为其授权的应用。在此页面“子管理员”这一角色还可以根据所需的业务场景继续向下级分配管理权限和访问权限。 至此,已成功实现子管理员角色所需的管理权限的配置。子管理员随后可依循相同流程,对下属用户进行相应的权限分配。

    2024年7月2日
    00
  • 管理中心

    管理中心由原「合作伙伴中心」「用户中心」「权限」3部分构成。

    2024年8月29日
    00
  • 跳转到其他页面并刷新页面

    本节介绍如何在界面设计器中为页面的“跳转动作”按钮配置强制刷新标签页功能,使用户切换标签页时,内容可以根据需要自动刷新或保持之前的状态。

    2024年9月20日
    00
  • 表格排序

    表格排序功能允许用户在页面上对表格中的数据进行排序,从而更方便地浏览和分析数据。该功能支持在整个表格层面或单个字段上配置排序规则。通过合理的排序配置,用户可以根据需要查看升序或降序排列的数据。

    2024年10月25日
    00
  • 树的展开层级

    默认配置展开到哪一层级。

    2024年9月20日
    00

Leave a Reply

登录后才能评论