Create Custom Endpoint in Directus
Directus V11.11.0
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/dog/dist
- Directus app will look like this
../extensions/dog/dist/index.js
Deploy with docker
- Keep extensions folder alongside
docker-compose.yml
file
---docker-compose.yml
---database|---demo.db
---uploads
---extensions├── dog│ ├── dist│ ├── node_modules│ ├── package-lock.json│ ├── package.json│ └── src
- 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