2015-11-26 3 views
0

Я пытаюсь использовать приложение API Azure для API, и у меня есть действующая схема Swagger для использования в сервисе, следуя документации here. Я могу получить схему Swagger на своей конечной точке как на моем локальном сервере, так и после развертывания приложения API, и я обновил файл web.config, включив в него тип приложения/json MIME. Мой файл apiapp.json выглядит следующим образом:Приложение Azure API не распознает определение Swagger

{ 
    "$schema": "http://json-schema.org/schema#", 
    "id": "apiapp.dlxdev", 
    "namespace": "microsoft.com", 
    "gateway": "/* gateway, copied from Azure portal */", 
    "version": "1.0.0", 
    "title": "DLX API App (Dev)", 
    "summary": "The developer version of the DLX API App.", 
    "author": "Daniel W. Hieber", 
    "endpoints": { 
    "apiDefinition": "/api.json", 
    "status": null 
    } 
} 

Даже если моя конечная точка определяется как /api.json, когда я иду к API Определение лопастью в Azure Portal, он говорит Failed to get metadata for 'apiApp.dlxDev' from endpoint '/swagger/docs/v1': Failed status code: 'NotFound'. Response Body: 'Not Found'.. Кажется, что Azure все еще ищет мой файл Swagger на конечной точке по умолчанию /swagger/docs/v1, а не указанную конечную точку /api.json.

Я также пробовал создать папку metadata и разместить там свою схему Swagger (переименовав ее в apiDefinition.swagger.json, следуя документации), и ей тоже не повезло.

Любые идеи, в которых я ошибаюсь? Почему Azure не обнаруживает конечную точку для моей схемы Swagger?

UPDATE 1

Теперь я получаю следующее сообщение об ошибке в API Определение клинка: #/definitions/: Cannot determine schema of data definition named ''. Это, похоже, не проблема с самой схемой Swagger, так как все ссылки на мои схемы отформатированы правильно, и сама схема действительна.

UPDATE 2

Единственное, что мне нужно сделать, это перезапустить шлюз, под которым мой API приложение было приютили. Перезапуск шлюза вызывает изменение сообщения об ошибке. Поэтому я думаю, что приложение теперь распознает мою схему Swagger. Но я все еще не уверен, почему я получаю ошибку «Не могу определить схему», так как моя схема отформатирована правильно.

ответ

1

Теперь я получаю следующую ошибку в лексике определения API:> #/определения /: Не удается определить схему определения данных с именем ''. Это> похоже, не проблема с самой схемой Swagger, так как все мои ссылки на схемы корректно отформатированы и сама схема действительна.

Я считаю, что для каждой операции Azure требуется ответ по умолчанию, определенный в swagger. Возможно, дважды проверьте, что каждая операция имеет ответ по умолчанию, и каждый ответ имеет свойство схемы, которое разрешает действительную схему в разделе определений.

Как:

"paths": { 
    "/Categories": { 
     "get": { 
     "tags": [ 
      "Categories" 
     ], 
     ... 
     ], 
     ... 
"responses": { 
    "200": { 
    "description": "EntitySet Categories", 
    "schema": { 
     "$ref": "#/definitions/NorthwindAPI.Models.Category" 
    } 
    }, 
    "default": { 
    "description": "Unexpected error", 
    "schema": { 
     "$ref": "#/definitions/_Error" 
    } 
    } 
}, 
... 
"definitions": { 
"NorthwindAPI.Models.Category": { 
    "properties": { 
     "CategoryID": { 
      "format": "int32", 
      "description": "CategoryID", 
      "type": "integer" 
     }, 
     "CategoryName": { 
      "description": "CategoryName", 
      "type": "string" 
     }, 
     "Description": { 
      "description": "Description", 
      "type": "string" 
     }, 
     "Picture": { 
      "description": "Picture", 
      "type": "string" 
     } 
    } 
}, 
"_Error": { 
    "properties": { 
     "error": { 
      "$ref": "#/definitions/_InError" 
     } 
    } 
}, 

НТН, Джош

+0

Просто FYI, у меня не было возможности попробовать это, но я скоро и я выложу здесь работал ли он. Цените ответ! – dwhieb