nocobase/packages/plugins/@nocobase/plugin-api-doc
被雨水过滤的空气-Rain a57c93d35b
feat: support e2e (#2624)
* chore: upgrade vitest to v0.34.3

* feat: setup NocoBase

* chore: preparing test env

* test: add a test of rigster

* refactor: rename test dir to testUtils

* chore: add tests

* chore: add ci for e2e

* chore: fix ci

* chore: avoid error in CI

* chore: add some utils for test

* chore: make more stable

* chore: should not close server in CI

* chore: add comments

* chore: change output dir

* fix: should use current branch to run tests

* chore: should request systemSettings by api in e2e

* chore: should build first in e2e CI

* chore: remove key

* chore: use execa to replace execSync

* refactor: extract test suite

* chore: add gotoPage

* chore: update uid of pageSchema

* chore: update collection name

* chore: use faker.js to generate data

* refactor: extract page config

* chore: ignore for association fields in faker

* chore: add testid

* chore: optimize action designer

* chore: associationFilter.Item designer

* chore: AssiciationFilter & BlockItem

* Revert "chore: AssiciationFilter & BlockItem"

This reverts commit b418df650e.

* Revert "chore: associationFilter.Item designer"

This reverts commit 7aa4d35c1a.

* Revert "chore: optimize action designer"

This reverts commit ff717b972f.

* chore: optimize Designer

* chore: compat with older browsers

* chore: use describe to avoid hooks is not run

* chore: add no-floating-promises to eslint rules

* chore: support argv

* chore: demo

* chore: better testId

* chore: change .e2e.ts to .test.ts

* fix(SchemaInitializer): avoid error

* refactor: move e2eUtils.ts to @nocobase/test

* fix: move e2eUtils to client

* chore: remove uselesscode

* refactor: add .env.e2e.example

* chore: optimize log

* refactor: use mockPage to replace gotoPage

* chore: update env.e2e

* chore: add APP_BASE_URL

* chore: gitigore

* test: add test related of menu

* chore: add SOCKET_PATH in env

* fix(vscode): load env when using vscode plugin
2023-09-27 20:00:17 +08:00
..
src feat: support e2e (#2624) 2023-09-27 20:00:17 +08:00
.npmignore
client.d.ts
client.js
LICENSE
package.json chore(versions): 😊 publish v0.14.0-alpha.6 2023-09-22 15:49:50 +08:00
README.md
README.zh-CN.md
server.d.ts
server.js

api-doc

English | 中文

Introduction

This plugin is based on swagger to write documentation.

How to access the documentation

  1. The access address in the plugin center is {domain}/admin/settings/api-doc/documentation
  2. The access address outside the plugin center is {domain}/api-documentation

How to write swagger documentation

The method in the plugin is the same

  1. src/swagger.{ts,json}
  2. src/swagger/index.{ts,json}

The file paths above can all be traversed to write documentation. Just export your written documentation by default. An example is shown below:

export default {
  info: {
    title: 'NocoBase API - Api-doc plugin',
  },
  tags: [],
  paths: {},
  components: {
    schemas: {}
  }
};

Usually, you only need to write info.title, tags, paths, and components. Other information such as server and info are merged into our base-swagger.

Base swagger includes the following code:

// base swagger
export default {
  openapi: '3.0.3',
  info: {
    title: 'NocoBase API documentation',
    description: '',
    contact: {
      url: 'https://github.com/nocobase/nocobase/issues',
    },
    license: {
      name: 'Core packages are Apache 2.0 & Plugins packages are AGPL 3.0 licensed.',
      url: 'https://github.com/nocobase/nocobase#license',
    },
  },
  externalDocs: {
    description: 'Find out more about NocoBase',
    url: 'https://docs.nocobase.com/',
  },
  components: {
    securitySchemes: {
      'api-key': {
        type: 'http',
        scheme: 'bearer',
      },
    },
  },
  security: [
    {
      'api-key': [],
    },
  ],
};

Note that configurations that can only be obtained at runtime, such as the server and version fields, are not filled in the base-swagger.

You can also override these defaults. When writing the swagger documentation for your plugin, you should consider whether your plugin's documentation can be accessed independently.

For detailed swagger writing rules, please refer to the official documentation.