2015-12-16 4 views
2

Я использовал swagger с настраиваемой конфигурацией и структурой каталогов в приложении узла.Swagger с пользовательской настройкой, не загружающей параметры

Вот отрывок из моего app.js

var swaggerConfig = { 
    appRoot: config.get('app_root'), 
    configDir: 'swagger/config', 
    swaggerFile: 'swagger/api.yaml' 
}; 

SwaggerExpress.create(swaggerConfig, function(err, swaggerExpress) { 
    if (err) { throw err; } 
    swaggerExpress.register(app); 
}); 

При конфигурации swagger/config каталога, имеющем стандартной конфигурации YAML default.yml.

# swagger configuration file 

# values in the swagger hash are system configuration for swagger-node 
swagger: 

    fittingsDirs: [ app/fittings ] 
    defaultPipe: null 
    swaggerControllerPipe: swagger_controllers # defines the standard processing pipe for controllers 

    # values defined in the bagpipes key are the bagpipes pipes and fittings definitions 
    # (see https://github.com/apigee-127/bagpipes) 
    bagpipes: 

    _router: 
     name: swagger_router 
     mockMode: false 
     mockControllersDirs: [ app/mocks ] 
     controllersDirs: [ app/controllers ] 

    _swagger_validate: 
     name: swagger_validator 
     validateResponse: true 

    # pipe for all swagger-node controllers 
    swagger_controllers: 
     - onError: json_error_handler 
     - cors 
     - swagger_security 
     - _swagger_validate 
     - express_compatibility 
     - _router 

    # pipe to serve swagger (endpoint is in swagger.yaml) 
    swagger_raw: 
     name: swagger_raw 

# any other values in this file are just loaded into the config for application access... 

Теперь имея вопрос о том, что контроллер req.swagger.params всегда возвращают null.

Может кто-нибудь помочь мне в выяснении этого вопроса ..

ответ

3

Это неясное из документации, но вы также должны добавить swagger_params_parser в swagger_controllers разделе в вашем default.yaml.

bagpipes: 

    _router: 
     name: swagger_router 
     mockMode: false 
     mockControllersDirs: [ api/mocks ] 
     controllersDirs: [ api/controllers ] 

    _swagger_validate: 
     name: swagger_validator 
     validateResponse: true 

    # pipe for all swagger-node controllers 
    swagger_controllers: 
     - swagger_params_parser 
     - cors 
     - swagger_security  
     - _swagger_validate  
     - _router 
+0

Действительно спасибо, что решила проблему. Можете ли вы предоставить мне какой-либо справочный вики/код, откуда вы найдете этот слой в config. Чтобы я прочитал его для будущей проблемы. И один вопрос: почему 'swagger_params_parser' не присутствует в приложении helloworld образца и работает все еще params. –

+0

@NazarHussain В примере, который я нашел, они вообще не указали 'swagger_controllers', поэтому я отлаживал код и нашел все волынки, которые были использованы, и нашел это :) –

+2

Жаль, что вы обнаружили, что вам пришлось отлаживать этот , Руководство по этой информации находится здесь: https://github.com/theganyo/swagger-node-runner/releases/tag/v0.6.0. –

Смежные вопросы