Failed to load API definition. Errors Hide Fetch errorFailed to fetch /apispec_1.json
scheung38 opened this issue · 1 comments
This is app/init.py:
"""Initialize Flask app."""
from flask import Flask, redirect
from flasgger import Swagger
from flask_restful import Api
def create_app():
"""Create Flask application."""
app = Flask(__name__, instance_relative_config=True)
with app.app_context():
from .generator import rss_content_gen_api
from .version import version_api
# Register Blueprints
# app.register_blueprint(content_gen_api.generator_bp)
app.register_blueprint(rss_content_gen_api.rss_generator_bp)
app.register_blueprint(version_api.version_bp)
# # Initialize Swagger
swag = Swagger(app)
print("swag :", swag)
return app
This is my app/version/version_api.py:
from flask import Blueprint, jsonify, request, abort
import os
from pathlib import Path
import logging
from flask_restful import Api, Resource
from flasgger.utils import swag_from
version_bp = Blueprint("version_bp", __name__)
@version_bp.route("/version", methods=["GET"])
@swag_from("versions.yml")
def get_version():
"""Example endpoint returning a list of colors by palette
This is using docstrings for specifications.
---
parameters:
- name: palette
in: path
type: string
enum: ['all', 'rgb', 'cmyk']
required: true
default: all
definitions:
Palette:
type: object
properties:
palette_name:
type: array
items:
$ref: '#/definitions/Color'
Color:
type: string
responses:
200:
description: A list of colors (may be filtered by palette)
schema:
$ref: '#/definitions/Palette'
examples:
rgb: ['red', 'green', 'blue']
"""
try:
version_file_path = Path("/home/appuser/version.txt")
if not version_file_path.exists():
abort(404, "Version file not found!")
with version_file_path.open("r") as f:
version_info = [line.strip() for line in f]
return jsonify(version_info)
except Exception as e:
print(e)
if __name__ == "__main__":
version_bp.run()
Dockefile at root:
# Use an official Python runtime as a parent image
FROM python:3.9
# Define environment variable
ENV FLASK_APP=run.py
ENV FLASK_PORT 5000
ENV PATH="/home/appuser/.local/bin:${PATH}"
# Create a non-root user and also directory of the same "appuser"
RUN useradd -m appuser
# Set the working directory to /home/appuser
WORKDIR /home/appuser
# Change to non-root user
USER appuser
# Create the log folder
RUN mkdir -p log
# Create the app.log file
RUN touch log/app.log
# Set ownership and permissions for log folder
RUN chown -R appuser:appuser log
# Copy only the requirements.txt first to leverage Docker cache
# This layer is recreated only when requirements.txt changes
COPY --chown=appuser:appuser requirements.txt ./
# Replace the access token placeholder in requirements.txt
ARG GITLAB_ACCESS_TOKEN
RUN pip install --no-cache-dir -r requirements.txt
# --trusted-host pypi.python.org
# Then copy the rest of the application code
# This layer is recreated whenever a file in your project changes
COPY --chown=appuser:appuser . .
# Expose the Flask port to the world
EXPOSE $FLASK_PORT
# Run the command to start the Flask app
CMD flask run --host=0.0.0.0 --port=$FLASK_PORT
Terminal:
docker build --build-arg GITLAB_ACCESS_TOKEN=$GITLAB_ACCESS_TOKEN -t generator:1 .
docker run -p 5001:5000 generator:1
Then:
Parts of requirements.txt:
flasgger==0.9.7.1
Flask==2.3.2
Flask-RESTful==0.3.10
Why am I getting within Insomnia:
app/version/versions.yml:
Get a Version by it's branch and commit hash
---
tags:
- version
produces:
- application/json
- application/xml
parameters:
- in: path
name: version_id
description: ID of the Version to get
type: integer
required: true
responses:
200:
description: OK
schema:
type: string
Logs:
172.17.0.1 - - [01/Jun/2023 19:03:13] "GET /apidocs HTTP/1.1" 308 -
172.17.0.1 - - [01/Jun/2023 19:03:13] "GET /apidocs/ HTTP/1.1" 200 -
172.17.0.1 - - [01/Jun/2023 19:03:14] "GET /flasgger_static/lib/jquery.min.js HTTP/1.1" 304 -
172.17.0.1 - - [01/Jun/2023 19:03:14] "GET /flasgger_static/swagger-ui-bundle.js HTTP/1.1" 304 -
172.17.0.1 - - [01/Jun/2023 19:03:14] "GET /flasgger_static/swagger-ui.css HTTP/1.1" 304 -
172.17.0.1 - - [01/Jun/2023 19:03:14] "GET /flasgger_static/swagger-ui-standalone-preset.js HTTP/1.1" 304 -
172.17.0.1 - - [01/Jun/2023 19:03:14] "GET /apispec_1.json HTTP/1.1" 200 -
172.17.0.1 - - [01/Jun/2023 19:03:15] "GET /apidocs HTTP/1.1" 308 -
172.17.0.1 - - [01/Jun/2023 19:03:15] "GET /apidocs/ HTTP/1.1" 200 -
172.17.0.1 - - [01/Jun/2023 19:03:15] "GET /flasgger_static/swagger-ui-standalone-preset.js HTTP/1.1" 304 -
172.17.0.1 - - [01/Jun/2023 19:03:15] "GET /flasgger_static/swagger-ui.css HTTP/1.1" 304 -
172.17.0.1 - - [01/Jun/2023 19:03:15] "GET /flasgger_static/lib/jquery.min.js HTTP/1.1" 304 -
172.17.0.1 - - [01/Jun/2023 19:03:15] "GET /flasgger_static/swagger-ui-bundle.js HTTP/1.1" 304 -
172.17.0.1 - - [01/Jun/2023 19:03:15] "GET /apispec_1.json HTTP/1.1" 200 -
EDIT:
It works in Chrome browser:
But why inside Insomnia I am still getting the above?
same issue