#json #swagger #loopbackjs #swagger-2.0
#json #развязность #loopbackjs #swagger-2.0
Вопрос:
Пока мы успешно используем циклическую обработку, но мы хотим добавить параметры запроса в нашу документацию API.
В нашем файле swagger.json у нас может быть что-то вроде =>
{
"swagger": "2.0",
"info": {
"version": "1.0.0",
"title": "poc-discovery"
},
"basePath": "/api",
"paths": {
"/Users/{id}/accessTokens/{fk}": {
"get": {
"tags": [
"User"
],
"summary": "Find a related item by id for accessTokens.",
"operationId": "User.prototype.__findById__accessTokens",
"parameters": [
{
"name": "fk",
"in": "path",
"description": "Foreign key for accessTokens",
"required": true,
"type": "string",
"format": "JSON"
},
{
"name": "id",
"in": "path",
"description": "User id",
"required": true,
"type": "string",
"format": "JSON"
},
{
"name":"searchText",
"in":"query",
"description":"The Product that needs to be fetched",
"required":true,
"type":"string"
},
{
"name":"ctrCode",
"in":"query",
"description":"The Product locale needs to be fetched. Example=en-GB, fr-FR, etc.",
"required":true,
"type":"string"
},
],
Я на 99% уверен swagger.json
, что информация генерируется динамически с помощью информации из .файлы json в /server/models
каталоге.
Я надеюсь , что смогу добавить параметры запроса, которые мы принимаем для каждой модели в них.файлы json. Чего я хочу избежать, так это необходимости прямого изменения swagger.json.
Каков наилучший подход для добавления наших параметров запроса, чтобы они отображались в наших документах? Очень смущен тем, как наилучшим образом подойти к этому.
Ответ №1:
Боюсь, что после нескольких часов переделок нет прямого способа добиться этого, поскольку swagger
сгенерированная здесь спецификация представляет собой представление метаданных удаленного взаимодействия для методов модели вместе с данными модели из model.json
файлов.
Таким образом, обновление метаданных удаленного взаимодействия для встроенных методов модели будет сложной задачей, и это может не полностью поддерживаться реализациями методов.
Правильный подход, IMO, заключается в следующем:
— создайте оболочку remoteMethod вокруг встроенного метода, для которого вы хотите, чтобы дополнительные параметры были введены с требуемыми http
данными сопоставления. — И отключите конечную точку REST для использования встроенного метода MyModel.disableRemoteMethod(<methodName>, <isStatic>)
.
Комментарии:
1. нет прямого пути …?
2. Еще одна вещь: если вы в конечном итоге пишете remoteMethod, вам нужно будет обработать дополнительные параметры в реализации удаленного метода и передать правильные аргументы, как ожидается, методом модели, чтобы получить ожидаемый результат.