2017-02-03 9 views
1

Есть ли модуль узла для проверки схемы/значений, предоставляемых объектом Express req, на основе определения схемы YAML Swagger для этого запроса?Проверка запроса Express на основе Swagger YAML

Допустим, это соответствующая часть YAML:

/books/{genre}: 
    get: 
    parameters: 
     - name: genre 
     in: path 
     required: true 
     type: string 
     - name: size 
     in: query 
     required: false 
     type: number 

Объект REQ, полученный из следующего запроса должен пройти проверку:

GET /books/sci-fi   
GET /books/thriller?size=5 

И это нужно терпеть неудачу:

GET /books/12 
+0

Вы можете на самом деле google "nodejs swagger" или нажимать на npm с аналогичным поиском и найти довольно хороший инструмент для создания экспресс-приложений для swagger. – Paul

+0

@Paul Я пробовал, конечно. Я хотел основать свой сервер на Swagger, но я не мог понять, как настроить маршрутизаторы, обработку ошибок ... У вас есть конкретная библиотека, соответствующая моему вопросу? – Aleks

+0

Да, но на самом деле это не тема для сайта, поэтому вы получаете «Закрытые голоса». Stack просит попросить людей помочь вам решить проблемы в коде, который вы написали, а не помогать вам в Google и оценивать инструменты. – Paul

ответ

1

Чтобы создать сервер узла node.js с использованием файла yaml, попробуйте swagger.io> Редактор Swagger> Online E ditor> создайте свой yaml в левой панели> Generate Server> Node.js

Загружаемый пакет будет использовать инструменты swagger для проверки. По умолчанию index.js в сгенерированный код будет определять, что ваши контроллеры (пользовательский код для обработки каждого запроса) будет жить в директории контроллеров:

// swaggerRouter configuration 
var options = { 
    swaggerUi: '/swagger.json', 
    controllers: './controllers', 
    useStubs: process.env.NODE_ENV === 'development' ? true : false // Conditionally turn on stubs (mock mode) 
}; 

Добавить эти элементы в определении конечной точки, чтобы определить имя контроллера и имя методы:

Вы можете добавить это свойство для вашего определения конечной точки, чтобы сказать развязность-инструменты, которые промежуточное программному файл JavaScript будет обрабатывать запрос:

x-swagger-router-controller: myController 
operationId: myMethod 

Создать каталог контроллеров, содержащий myController.js что экспорт myMethod:

module.exports.myMethod = myMethod; 
function myMethod(req, res) { 
    //do stuff 
    res.end(); 
} 

Входы будут проверены до того, как запрос будет перенаправлен на ваш контроллер.

+0

быстрый вопрос относительно этого, я успешно установил все вышеперечисленное ^. Swagger в настоящее время предлагает мне проверку на стороне сервера (что хорошо), однако, если бы я должен был использовать это приложение в производстве, мне нужно было бы использовать другую форму проверки на стороне сервера, а не использовать Swagger? – Malone