
Security News
Axios Supply Chain Attack Reaches OpenAI macOS Signing Pipeline, Forces Certificate Rotation
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.
apidoc-creator
Advanced tools
Crea el apidoc de las rutas de un servicio web según el formato que establece ApidocJS.
La forma tradicional de documentar servicios web RESTFUL, es escribir la descripción de la ruta en forma de comentario en el caso de ApidocJS o en un fichero con formato JSON en el caso de Swagger.
ApidocJS es muy flexible al momento de describir la ruta de un servicio, sin embargo, describir las rutas en forma de comentarios no es la adecuada si se quiere automatizar este proceso.
Apidoc Creator utiliza ApidocJS para crear la documentación y ofrece un sistema diferente para describir las rutas, fácil de implementar. Para describir los datos de entrada y salida, utiliza la librería Field Creator.
| Propiedad | Descripción |
|---|---|
name | Nombre asignado a la ruta. |
method | Método HTTP para acceder al recurso. |
path | Ruta del recurso (URI). |
group | Grupo al que pertenece la ruta. |
version | Versión de la ruta. |
description | Descripción de la ruta. |
input | Datos de entrada. Objeto de tipo FieldGroup. |
output | Datos de salida. Objeto de tipo FieldGroup. |
inputExamples | Ejemplos de datos de entrada. |
outputExamples | Ejemplos de datos de salida. |
permissions | Lista de todos los roles que pueden acceder al recurso. |
sampleRequest | Dirección URL de la ruta para probar una petición. |
input y outputconst INPUT = {
headers : FIELD,
params : FIELD,
query : FIELD,
body : FIELD
}
const OUTPUT = FIELD // Siempre sera body
Para crear los objetos input y output, se recomienda utilizar la librería field-creator.
onCreateEsta función puede utilizarse para realizar una tarea de forma automática cada vez que se defina una ruta.
function onCreate (route) {
console.log(route.apidoc)
// TODO
}
const router = Apidoc.router(onCreate)
router.GET('/api/v1/libros', { ... })
router.GET('/api/v1/libros/:id', { ... })
router.POST('/api/v1/libros', { ... })
router.PUT('/api/v1/libros/:id', { ... })
router.DELETE('/api/v1/libros/:id', { ... })
Para instalar sobre un proyecto, ejecutar el siguiente comando:
$ npm install --save apidoc-creator
const { Apidoc } = require('apidoc-creator')
const { Field } = require('field-creator')
LIBRO = sequelize.define('libro', {
id : Field.ID({ comment: 'ID del libro.' }),
titulo : Field.STRING({ comment: 'Título del libro.', example: 'El gato negro' }),
precio : Field.FLOAT({ comment: 'Precio del libro. [Bs]' }),
estado : Field.ENUM(['ACTIVO', 'INACTIVO'], { comment: 'Estado del registro.' })
}, {
comment: 'Representa a una obra literaria.'
})
const markdown = Apidoc.model(LIBRO)
console.log(markdown)
/*
### **libro**
Representa a una obra literaria.
| Atributo | Tipo de dato | Descripción |
|--------------------|----------------------------------------|--------------------------------|
| `id` [ PK ] | `Integer` | ID del libro. |
| `titulo` | `String` | Título del libro. |
| `precio` | `Float` | Precio del libro. [Bs] |
| `estado` | `Enum=ACTIVO,INACTIVO` | Estado del registro. |
*/
const { Apidoc } = require('apidoc-creator')
const { Field, THIS } = require('field-creator')
const express = require('express')
const app = express()
function onCreate (route) {
app[route.method](route.path, route.controller)
console.log(route.apidoc)
/**
* @api {post} /libros crearLibro
* @apiName crearLibro
* @apiGroup Libro
* @apiDescription Crea un libro.
* @apiVersion 1.0.0
* @apiParam (Datos de entrada - body) {String} titulo Título del libro. <br><strong>len: </strong><code>0,255</code>
* @apiParam (Datos de entrada - body) {Float} precio Precio del libro. [Bs] <br><strong>isFloat: </strong><code>true</code>, <strong>min: </strong><code>0</code>, <strong>max: </strong><code>1e+308</code>
* @apiParam (Datos de entrada - body) {Enum} estado Estado del registro. <br><strong>isIn: </strong><code>ACTIVO,INACTIVO</code>
* @apiParamExample {json} Ejemplo Petición
* {
* "titulo": "El gato negro",
* "precio": 12.99,
* "estado": "ACTIVO"
* }
* @apiSuccess (Respuesta - body) {Integer} [id] ID del libro.
* @apiSuccess (Respuesta - body) {String} [titulo] Título del libro.
* @apiSuccess (Respuesta - body) {Float} [precio] Precio del libro. [Bs]
* @apiSuccess (Respuesta - body) {Enum} [estado] Estado del registro.
* @apiSuccessExample {json} Respuesta Exitosa: 200 Ok
* HTTP/1.1 200 Ok
* {
* "id": 1,
* "titulo": "El gato negro",
* "precio": 12.99,
* "estado": "ACTIVO"
* }
*/
}
const router = Apidoc.router(onCreate)
router.GET('/libros', {
description : 'Crea un libro.',
name : 'crearLibro',
group : 'Libro',
input : {
body: Field.group(LIBRO, {
titulo : THIS({ allowNull: false }),
precio : THIS({ allowNull: false }),
estado : THIS({ allowNull: false })
})
},
output: Field.group(LIBRO, {
id : THIS(),
titulo : THIS(),
precio : THIS(),
estado : THIS()
}),
controller: (req, res, next) => {
return res.status(200).json({ msg: 'ok' })
}
})
FAQs
Crea el apidoc de las rutas de un servicio web según el formato que establece ApidocJS.
The npm package apidoc-creator receives a total of 19 weekly downloads. As such, apidoc-creator popularity was classified as not popular.
We found that apidoc-creator demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.

Security News
Open source is under attack because of how much value it creates. It has been the foundation of every major software innovation for the last three decades. This is not the time to walk away from it.

Security News
Socket CEO Feross Aboukhadijeh breaks down how North Korea hijacked Axios and what it means for the future of software supply chain security.