Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

express-api

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

express-api - npm Package Compare versions

Comparing version 0.0.0 to 0.0.1

.npmignore

26

package.json
{
"name": "express-api",
"version": "0.0.0",
"description": "Swagger API framework.",
"version": "0.0.1",
"description": "",
"main": "index.js",

@@ -9,4 +9,22 @@ "scripts": {

},
"author": "Mario Gutierrez <mario@mgutz.com>",
"license": "ISC"
"author": "",
"license": "ISC",
"dependencies": {
"cson-safe": "^0.1.1",
"js-yaml": "^3.0.2",
"lodash": "^2.4.1",
"serve-static": "^1.2.3"
},
"peerDependencies": {
"express": "4.x"
},
"devDependencies": {
"express": "^4.4.2"
},
"keywords": [
"swagger",
"express",
"api",
"resource"
]
}
# express-api
Swagger API framework.
Express-api is an API framework based on Swagger.
Express-api uses CSON, JSON or YAML files to expose your apis using the
eapiger specs. Express-eapi reloads schemas in development facilitating schema
creation.
DO NOT USE, WIP! Documentation is inaccurate.
## Using
Install the library
npm install express-api
Create resource listings schema and resource schema files in a common
directory, eg `public/api/docs`. Here are the official examples
- [petstore resource listing](http://petstore.eapiger.wordnik.com/api/api-docs)
- [petstore resource](http://petstore.eapiger.wordnik.com/api/api-docs/pet)
Implement your resource API. NOTE, the name of your resoure methods must match
the `nickname` property in the schema operations
```
//// pet.json
apis: [{
path: "/pet/{petId}",
operations: [{
summary: "Find pet by ID",
nickname: "getPetById",
}]
}]
```
```
//// resource/pet.js
exports.getPetById = function(req, res) {
}
```
Wire it all up
```
var express = require('express');
var app = express();
var Swag = require('express-eapi');
// create routers for API and docs
var apiRouter = express.Router();
var docsRouter = epxress.Router();
app.use('/api', apiRouter);
app.use('/api/api-docs', docsRouter);
var eapi = new Swag({
apiRouter: apiRouter,
docsRouter: docsRouter,
docsDir: 'public/api/docs',
extname: '.json'
});
eapi
.addApi('pet.json', require('./resources/pet.js'))
.addApi('user.json', require('./resources/user.js'))
.configureDocs('index.json', 'http://localhost:8000/api');
app.listen(3000);
```
Browser your json schemas at `http://localhost:3000/api/api-docs` or
through the eapiger UI.
## Middleware
The primary reason for creating express-api is the lack of support for
plain middleware in other frameworks.
The implementation method can either be a function or array of functions.
exports.getPetById = function(req, res, next) { ... };
exports.getPetById = [
validationMiddleware({ body: {id: joi.integer()}}),
function(req, res, next) { ... };
];
That can be a bit tedious. Express-api can use middleware as plugins. Let's
create one.
function validate(req, res, next) {
// get the spec for the current operation
var spec = req.__eapiger.operation;
var params = spec.parameters;
params.forEach(function(param) {
if (param.required && param.paramType === 'path') {
if (!req.params[param.name]) res.send(400, 'Require argument missing' + param.name);
}
});
next();
}
To use it
eapi
.use(validate)
.addApi('pet.json', require('./resources/pet.js'))
The position matters. All middleware used before `addApi` are applied before
a operation method in the pipeline. Post filters look like this.
eapi
.addApi('pet.json', require('./resources/pet.js'))
.use(normalizeResult);
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc