Comments (2)
You can do this now, if you handle loading the controllers yourself:
// UserManager.js
export default class UserController {
constructor(userManager) {
this.userManager = userManager;
}
/**
* Return a list of all users.
*
* @param {ExegesisContext} context - The context to get information from.
* @returns {User[]} - Users
*/
async getTags(context) {
return await this.userManager.getUsers();
}
}
// server.js
router.use(await exegesisExpress.middleware(OPENAPI_DOC, {
controllers: {
userController: new UserController(userManager)
}
});
I actually do something really similar to this in my project so I can do dependency injection (and I cheat a bit and call into an internal function in Exegesis):
import { loadControllersSync } from 'exegesis/lib/controllers/loadControllers'; // TODO: Expose this in exegesis?
function loadControllers(services) {
return loadControllersSync(
path.resolve(__dirname, 'controllers'),
"**/*.js",
path => {
const module = require(path);
if(module.default) {
return new module.default(services);
} else {
return module;
}
}
);
}
As you can tell from that comment, I've thought about exposing that function directly. Do you think that function would be enough to do what you want? Can you think of a better API for this? I'm certainly open to suggestions. :)
from exegesis.
Ah, okay. Thanks for the clarification, I didn't know, that you can do this. The docs doesn't state that.
The first one would be everything I need, the other one would be great as well. Maybe add a "controllerInstantiationArgs" argument to the constructor, so that the loaded would instantiate the class and add the args as a DI to the controller.
from exegesis.
Related Issues (20)
- Crash with recursive definition in referenced OpenAPI file HOT 5
- Incorrectly failing validation under a weird condition HOT 4
- Validation error of request body when oneOf is used HOT 5
- Crash with recursive definition in referenced OpenAPI file is back again
- Does not work well with newest json-ptr (1.3.1) HOT 2
- Your .dependabot/config.yml contained invalid details HOT 1
- Export class from controller HOT 2
- Could not find controller if controller is a .ts file HOT 2
- Can we access "ExegesisContext" at express middleware(app.use) not controllers/*.ts HOT 1
- How to filter the request body by only passing the defined requestBody schema? HOT 2
- Security vulnerability in `json-ptr` HOT 4
- Exegesis 3.0.0 using updated ajv outputs issues with OpenAPI spec, but 2.0.0 did not HOT 5
- res.redirect not supported HOT 3
- Is OpenAPI 3.1 supported?
- Bump json-ptr to fix security vulnerability HOT 1
- Support for additional string formats HOT 2
- json-schema-ref-parser dependency breaks node engine < 17 HOT 3
- How to use exegesis with multipart/form-data?
- Mime-types HOT 2
- Query parameters not being validated. HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from exegesis.