Search code examples
javascriptswaggerstrongloop

strongloop, how to define a response class for a custom endpoint


According to the documentation you can create custom response classes; https://docs.strongloop.com/display/public/LB/Remote+methods#Remotemethods-Argumentdescriptions

The remote method description I use is:

common/models/products-sku.js

ProductsSku.remoteMethod( 'getSomeData', { http: {path: '/getSomeData', verb: 'get'}, accepts: {arg: 'filter', type: 'object', http: { source: 'query'} }, returns: { arg: 'id', description: 'Custom endpoint', type: 'CustomProductType', root: true } } );

In the same file I have a definition for the CustomProductType;

var CustomProductType: { id: Number, name: String, ... };

Now if I open the explorer the response class is defined as CustomProductType but there is no model definition in the /explorer/resources/ProductsSku swagger definition (this is still swagger 1.2)

As this is not an actual model, how do i register/define the model, such that it is send with the api definition.

== What I have tried:

common/models/products-sku.js:

var DataSource = require('loopback-datasource-juggler').DataSource; var ds = new DataSource('memory'); ds.define('CustomProductType', CustomProductType);

The memory datasource is because it is not an actual Model.


Solution

  • As this is not in the documentation, here is what I did.

    Add the name of the response class you like to the remoteMethod definition as I did above with the type: 'CustomProductType'

    Go to the server/model-config.json file and add the type there

    "CustomProductType": { "dataSource": false, "public": true }

    now add your model definition to the common/models/custom_product_type.json