Skip to content

Instantly share code, notes, and snippets.

@shivampip
Last active August 6, 2024 14:11

Revisions

  1. shivampip revised this gist Nov 17, 2023. 1 changed file with 2 additions and 1 deletion.
    3 changes: 2 additions & 1 deletion directus_custom_endpoint.md
    Original file line number Diff line number Diff line change
    @@ -9,7 +9,8 @@ cd shivam
    ```
    * Create directus extension here
    ```
    npm init directus-extension
    npm init directus-extension #old
    npx create-directus-extension@latest #new
    ```
    * Select extension-type as `endpoint`
    * Select name as `dog`
  2. shivampip revised this gist Dec 21, 2021. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions directus_custom_endpoint.md
    Original file line number Diff line number Diff line change
    @@ -22,6 +22,7 @@ simple example
    export default (router) => {
    router.get("/", (req, res) => res.send("Hello World, I am Dog"));
    };
    // accessible on /dog
    ```
    complex example
    ```
    @@ -38,6 +39,7 @@ module.exports = function registerEndpoint(router, { services, exceptions }) {
    });
    });
    };
    // accessile on /cat/ and /cat/hello
    ```
    * Build extension with
    ```
  3. shivampip revised this gist Dec 21, 2021. 1 changed file with 3 additions and 2 deletions.
    5 changes: 3 additions & 2 deletions directus_custom_endpoint.md
    Original file line number Diff line number Diff line change
    @@ -16,13 +16,14 @@ npm init directus-extension
    * Select language as `javascript`
    * Now go to src folder on newly created extension folder `dog/src`
    * Edit `index.js` file
    * simple example
    *
    simple example
    ```
    export default (router) => {
    router.get("/", (req, res) => res.send("Hello World, I am Dog"));
    };
    ```
    * complex example
    complex example
    ```
    module.exports = function registerEndpoint(router, { services, exceptions }) {
    router.get("/", (req, res) => {
  4. shivampip revised this gist Dec 21, 2021. 1 changed file with 17 additions and 0 deletions.
    17 changes: 17 additions & 0 deletions directus_custom_endpoint.md
    Original file line number Diff line number Diff line change
    @@ -16,10 +16,27 @@ npm init directus-extension
    * Select language as `javascript`
    * Now go to src folder on newly created extension folder `dog/src`
    * Edit `index.js` file
    * simple example
    ```
    export default (router) => {
    router.get("/", (req, res) => res.send("Hello World, I am Dog"));
    };
    ```
    * complex example
    ```
    module.exports = function registerEndpoint(router, { services, exceptions }) {
    router.get("/", (req, res) => {
    res.send({
    mesasge: "Welcome to Cat world",
    });
    });
    router.get("/hello", (req, res) => {
    res.send({
    message: "Hola from Cats",
    });
    });
    };
    ```
    * Build extension with
    ```
  5. shivampip revised this gist Dec 21, 2021. 1 changed file with 4 additions and 4 deletions.
    8 changes: 4 additions & 4 deletions directus_custom_endpoint.md
    Original file line number Diff line number Diff line change
    @@ -36,12 +36,12 @@ npm run build
    ```
    ---docker-compose.yml
    ---database
    ---demo.db
    |---demo.db
    ---uploads
    ---extensions
    ---endpoints
    ---dog
    ---index.js
    |---endpoints
    |---dog
    |---index.js
    ```
    * Add volume mapping for extensions
    ```
  6. shivampip created this gist Dec 21, 2021.
    59 changes: 59 additions & 0 deletions directus_custom_endpoint.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,59 @@
    ## Create Custom Endpoint in Directus

    ### Build Extension

    * Create any folder and go inside
    ```
    mkdir shivam
    cd shivam
    ```
    * Create directus extension here
    ```
    npm init directus-extension
    ```
    * Select extension-type as `endpoint`
    * Select name as `dog`
    * Select language as `javascript`
    * Now go to src folder on newly created extension folder `dog/src`
    * Edit `index.js` file
    ```
    export default (router) => {
    router.get("/", (req, res) => res.send("Hello World, I am Dog"));
    };
    ```
    * Build extension with
    ```
    npm run build
    ```

    ### Deploy extension
    * Copy content from `dog/dist/`
    * Paste in `extensions/endpoints/dog`
    * Directus app will look like this `../extensions/endpoints/dog/index.js`

    ### Deploy with docker
    * Keep extensions folder alongside `docker-compose.yml` file
    ```
    ---docker-compose.yml
    ---database
    ---demo.db
    ---uploads
    ---extensions
    ---endpoints
    ---dog
    ---index.js
    ```
    * Add volume mapping for extensions
    ```
    volumes:
    - ./uploads:/directus/uploads
    - ./database:/directus/database
    - ./extensions:/directus/extensions
    ```
    * Done
    * Now run docker compose
    ```
    sudo docker-compose up
    OR
    sudo docker-compose up -d
    ```