Django Rest API жалуется на версию swagger
Мы используем DJango rest framework для создания api. Мы добавили страницу swagger, но она жалуется на версию swagger.
Unable to render this definition
The provided definition does not specify a valid version field.
Please indicate a valid Swagger or OpenAPI version field. Supported version fields are swagger: "2.0" and those that match openapi: 3.0.n (for example, openapi: 3.0.0).
Я следовал документации https://www.django-rest-framework.org/topics/documenting-your-api/#a-minimal-example-with-swagger-ui
Ниже находятся файлы.
urls.py
from django.urls import path
urlpatterns = [
...
...
path("openapi", get_schema_view(
title="My api",
description="API for me",
version="1.0.0"
), name="openapi-schema"),
path('swagger-ui/', TemplateView.as_view(
template_name='swagger-ui.html',
extra_context={'schema_url':'openapi-schema'}
), name='swagger-ui')
]
templates/swagger-ui.html
<!DOCTYPE html>
<html>
<head>
<title>Swagger</title>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" href="//unpkg.com/swagger-ui-dist@3/swagger-ui.css" />
</head>
<body>
<div id="swagger-ui"></div>
<script src="//unpkg.com/swagger-ui-dist@3/swagger-ui-bundle.js"></script>
<script>
const ui = SwaggerUIBundle({
url: "{% url schema_url %}",
dom_id: '#swagger-ui',
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIBundle.SwaggerUIStandalonePreset
],
layout: "BaseLayout",
requestInterceptor: (request) => {
request.headers['X-CSRFToken'] = "{{ csrf_token }}"
return request;
}
})
</script>
</body>
</html>
Я думаю, что он жалуется на version: 1.0.0
, упомянутый в openapi
представлении схемы. Но нужно убедиться, что что-то другое не вызывает эту проблему.