* Use loopback-swagger to generate swagger.json (Miroslav Bajtoš) * Bump up strong-swagger-ui version to ^21.0.0 (Miroslav Bajtoš) * Register loopback-explorer to app (Hage Yaapa) * Generate Swagger Spec 2.0 documentation (Miroslav Bajtoš) * Upgrade to strong-swagger-ui@21.0 (swagger-ui@2.1) (Miroslav Bajtoš) * bump major version (Ryan Graham) * Rework the module to a loopback component (Miroslav Bajtoš) * Add `opts.host` to customize host of resource URLs (cndreiter) * Removed branch-lock, and bumped version (Shelby Sanders) * Corrected to propagate properties from existing items object (Shelby Sanders) * Use strong-swagger-ui instead of swagger-ui (Miroslav Bajtoš) * Remove public/images/throbber.gif (Miroslav Bajtoš) * Move CSS customizations to loopbackStyles.css (Miroslav Bajtoš) * Added Swagger fields for items and max/min(Items|Length) (Shelby Sanders) * Corrected accidental duplication of responseMessages from merge (Shelby Sanders) * review comments (Ying Tang) * add more tests (Ying Tang) * float additionalProperties and description to top (Ying Tang) * Convert array to string for summary, note, and description. Fix additionalProperties (Ying Tang) * back out changes of id to URI (Ying Tang) * Uri id and $ref, join description (Ying Tang) * propertyName, not property (Ying Tang) * fix resource listing and remove id from each property (Ying Tang) * remove id fields from required array (Ying Tang) * remove required from sub-schema (Ying Tang) * bump version (Ying Tang) * add $ref and remove type for models (Ying Tang) * Changed Swagger() to omit resources with no content (Shelby Sanders) * Added event emission for swaggerResources to support customization (Shelby Sanders) * Corrected handling of type for operation, including containers (Shelby Sanders) * Corrected handling for absent settings.additionalProperties (Shelby Sanders) * Added support for public in order to hide operations from Swagger (Shelby Sanders) * added reference to settings for additional properties (Jake Ayala) * Protected against non-Model generation requests (Shelby Sanders) * Corrected merge issues (Shelby Sanders) * Added padding to content well in order to counteract changes in SwaggerUI (Shelby Sanders) * Added support for scanning accepts params for Model references (Shelby Sanders) * Changed addRoute() to honor X-Forwarded-Host (Shelby Sanders) * Removed branch-lock for loopback (Shelby Sanders) * Changed to possibly pull model description from ctor.settings (Shelby Sanders) * Corrected generateModelDefinition() to scan for model references nested in other models (Shelby Sanders) * Corrected prepareDataType() to handle collections and nesting, and changed to always and only use responseMessages (Shelby Sanders) * Corrected generateModelDefinition() to scan for model references in remote returns and errors (Shelby Sanders) * Corrected default for consumes+produces (Shelby Sanders) * Ported prepareDataType() from old strong-remoting:ext/swagger.js (Shelby Sanders) * Corrected issues with merge of 2.x changes (Shelby Sanders) * Load swagger ui from `swagger-ui` package instead. (Samuel Reed) * Ported extensions for more Swagger 1.2 metadata, returns+errors as responseMessages, consumes+produces, and X-Forwarded-Proto for reverse-proxying from HTTPS to HTTP (Shelby Sanders) * Upgraded to SwaggerUI 2.0.18 (Shelby Sanders) * Added support for toggling Model and Schema, and added support for primitives in StatusCodeView (Shelby Sanders) * Ensure Response Content Type is shown regardless of Response Class (Shelby Sanders) * Reverted to use special loading logic from loopback-explorer (Shelby Sanders) * Updated to latest Swagger-UI for better responseMessage signature handling (Shelby Sanders) * Upgraded to latest Swagger-UI for 1.2 support (Shelby Sanders) * Correct description of collections of object and nested (Shelby Sanders) * Add indication of response being a collection (Shelby Sanders) |
||
---|---|---|
example | ||
lib | ||
public | ||
test | ||
.gitignore | ||
.jshintrc | ||
CHANGES.md | ||
CONTRIBUTING.md | ||
LICENSE | ||
README.md | ||
index.js | ||
package.json |
README.md
loopback-explorer
Browse and test your LoopBack app's APIs.
Basic Usage
Below is a simple LoopBack application. The explorer is mounted at /explorer
.
var loopback = require('loopback');
var app = loopback();
var explorer = require('../');
var port = 3000;
var Product = loopback.Model.extend('product');
Product.attachTo(loopback.memory());
app.model(Product);
app.use('/api', loopback.rest());
// Register explorer using component-centric API:
explorer(app, { basePath: '/api', mountPath: '/explorer' });
// Alternatively, register as a middleware:
app.use('/explorer', explorer.routes(app, { basePath: '/api' }));
console.log("Explorer mounted at localhost:" + port + "/explorer");
app.listen(port);
Upgrading from v1.x
To upgrade your application using loopback-explorer version 1.x, just replace
explorer()
with explorer.routes()
in your server script:
var explorer = require('loopback-explorer');
// v1.x - does not work anymore
app.use('/explorer', explorer(app, options);
// v2.x
app.use('/explorer', explorer.routes(app, options));
In applications scaffolded by slc loopback
, the idiomatic way is to register
loopback-explorer via component-config.json
:
{
"loopback-explorer": {
"mountPath": "/explorer"
}
}
Advanced Usage
Many aspects of the explorer are configurable.
See options for a description of these options:
// Mount middleware before calling `explorer()` to add custom headers, auth, etc.
app.use('/explorer', loopback.basicAuth('user', 'password'));
explorer(app, {
basePath: '/custom-api-root',
uiDirs: [
path.resolve(__dirname, 'public'),
path.resolve(__dirname, 'node_modules', 'swagger-ui')
]
apiInfo: {
'title': 'My API',
'description': 'Explorer example app.'
},
resourcePath: 'swaggerResources',
version: '0.1-unreleasable'
}));
app.use('/custom-api-root', loopback.rest());
Options
Options are passed to explorer(app, options)
.
basePath
: String
Default:
app.get('restAPIRoot')
or'/api'
.
Sets the API's base path. This must be set if you are mounting your api to a path different than '/api', e.g. with `loopback.use('/custom-api-root', loopback.rest());
mountPath
: String
Default:
/explorer
Set the path where to mount the explorer component.
protocol
: String
Default:
null
A hard override for the outgoing protocol (
http
orhttps
) that is designated in Swagger resource documents. By default,loopback-explorer
will write the protocol that was used to retrieve the doc. This option is useful if, for instance, your API sits behind an SSL terminator and thus needs to report its endpoints ashttps
, even though incoming traffic is auto-detected ashttp
.
uiDirs
: Array of Strings
Sets a list of paths within your application for overriding Swagger UI files.
If present, will search
uiDirs
first when attempting to load Swagger UI, allowing you to pick and choose overrides to the interface. Use this to style your explorer or add additional functionality.
See index.html, where you may want to begin your overrides. The rest of the UI is provided by Swagger UI.
apiInfo
: Object
Additional information about your API. See the spec.
resourcePath
: String
Default:
'resources'
Sets a different path for the resource listing. You generally shouldn't have to change this.
version
: String
Default: Read from package.json
Sets your API version. If not present, will read from your app's package.json.