跳至正文
Wener Notes

Directus

约 2 分钟阅读
  • 是什么?
    • GPL-3.0, NodeJS+Typescript+Vue
    • Headless CMS
    • Knex
    • DB -> GraphQL+REST
    • 数据库支持 PostgreSQL, MySQL, SQLite, OracleDB, CockroachDB, MariaDB, MS-SQL
    • redis for cluster
  • concepts
bash
# http://127.0.0.1:8055
# SQLite
docker run --rm -it \
  -p 8055:8055 \
  -e TELEMETRY=false \
  -e KEY=replace-with-random-value \
  -e SECRET=replace-with-random-value \
  -e [email protected] \
  -e ADMIN_PASSWORD=ADMIN_PASSWORD \
  -e DB_CLIENT=sqlite3 \
  -e DB_FILENAME=/directus/database/data.db \
  -e WEBSOCKETS_ENABLED=true \
  -v $PWD/data/database:/directus/database \
  -v $PWD/data/uploads:/directus/uploads \
  -v $PWD/data/extensions:/directus/extensions \
  --name directus directus/directus

npm init directus-project

endpoint

text
# REST
GET /auth
POST /auth/refresh
POST /auth/login
POST /auth/login/:provider
POST /auth/logout
POST /auth/password/request

# GraphQL
POST /graphql/system

auth

text
?access_token=<token>
text
Authorization: Bearer <token>

client

bash
npm install @directus/sdk
依赖包
TypeScript
import { createDirectus, rest, graphql } from '@directus/sdk';

interface Article {
  id: number;
  title: string;
  content: string;
}

interface Schema {
  articles: Article[];
}

// Client with REST support
const client = createDirectus<Schema>('http://directus.example.com').with(rest());

// Client with GraphQL support
const client = createDirectus<Schema>('http://directus.example.com').with(graphql());

config

bash
CONFIG_PATH="/path/to/config.js" npx directus start
ini
KEY=
SECRET=
TELEMETRY=false

CONFIG_PATH=.env
PUBLIC_URL=/
MAX_PAYLOAD_SIZE=1mb
# 也可以 false
ROOT_REDIRECT=/admin
# admin app
SERVE_APP=true
GRAPHQL_INTROSPECTION=true
HOST="0.0.0.0"
PORT=8055

WEBSOCKETS_ENABLED=true

REDIS=redis://user:[email protected]:6380/4
REDIS_HOST=
REDIS_USERNAME=
REDIS_PASSWORD=

DB_CLIENT="pg"
# DB_CONNECTION_STRING= # works for pg
DB_HOST="localhost"
DB_PORT=5432
DB_DATABASE="directus"
DB_USER=directus
DB_PASSWORD="directus"
# DB_SEARCH_PATH="array:directus,public"

# https://github.com/vincit/tarn.js#usage
# DB_POOL__XXX
# https://nodejs.org/api/tls.html
# DB_SSL__CA
# DB_SSL__CA_FILE


# local, oauth2, openid, ldap, saml
AUTH_PROVIDERS=

extensions

bash
npx create-directus-extension@latest
bash
FROM directus/directus:10.8.3

USER root
RUN corepack enable
USER node

RUN pnpm install directus-extension-package-name
text
extensions/
  <extension-name>/
    dist/
      index.js
    package.json
  ...

内部结构

  • directus_activity
  • directus_collections
  • directus_dashboards
  • directus_extensions
  • directus_fields
  • directus_files
  • directus_flows
  • directus_folders
  • directus_migrations
  • directus_notifications
  • directus_operations
  • directus_panels
  • directus_permissions
  • directus_presets
  • directus_relations
  • directus_revisions
  • directus_roles
  • directus_sessions
  • directus_settings
  • directus_shares
  • directus_translations
  • directus_users
  • directus_versions
  • directus_webhooks

关联信息

反向链接、本文链接的其他页面和外部资料。

参考资料

GitHub3 条
其他外链3 条
最近更新commit d90fb28编辑