Skip to content

Instantly share code, notes, and snippets.

@shivampip
Last active November 17, 2023 18:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shivampip/4f49b60fcc1a07204530f24038f87fd7 to your computer and use it in GitHub Desktop.
Save shivampip/4f49b60fcc1a07204530f24038f87fd7 to your computer and use it in GitHub Desktop.
Directus Custom Endpoint

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 #old
npx create-directus-extension@latest #new
  • 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

simple example

export default (router) => {
    router.get("/", (req, res) => res.send("Hello World, I am Dog"));
};
// accessible on /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",
        });
    });
};
// accessile on /cat/ and /cat/hello
  • 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment