Определение параметров запроса для базовых операций CRUD в Loopback

#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, вам нужно будет обработать дополнительные параметры в реализации удаленного метода и передать правильные аргументы, как ожидается, методом модели, чтобы получить ожидаемый результат.