我无法通过swagg看到web服务的响应

2024-10-03 11:20:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我对招摇有意见。我创建了一个由网页调用的web服务。在那里,返回的信息是可见的,但是当我想通过swagger查看它时(因为我需要在这两个地方都进行检查),它会显示这个错误

enter image description here

这是我用Python做的第二个web服务,我一直在做这件事,读Google,所以我知道它不是最好的,也不是最漂亮的。 在这里,我留下我的页面代码和python代码来阅读他们的观点:

from app import APP
import cx_Oracle
import json
from flask import render_template, request, jsonify
import log
import database
from flask_restplus import Api, Resource, fields

with open('./config/config_countries.json', 'r') as config_file:
    config = json.load(config_file)

with open('./config/config_general.json', 'r') as config_file:
    config_general = json.load(config_file)

global max_return
global log_tag
log_tag = config["CONFIG"]["LOG_TAG"]
srv_name = config["CONFIG"]["LOG_TAG"]
desc = config["CONFIG"]["DESCRIPTION"]
profile_name = config["CONFIG"]["PROFILE_NAME"]
conn_str = config_general["CONFIG"]["DB"]
max_return = config_general["CONFIG"]["MAX_RETURN"]
limite = config_general["CONFIG"]["LIMIT_PER_SECOND"]

log.init(profile_name)
log.dbg('Start')
database.init()

api = Api(APP, version='1.0', title=srv_name,
          description=desc + '\n'
                             'Database:' + conn_str + '\n'
                                                           'Max request by second:' + limite)

ns = api.namespace('getCountries', description='getCountries Predictions')

@APP.route('/getCountries', methods=['GET', 'POST'])
@ns.response(200, 'Success')
@ns.response(404, 'Not found')
@ns.response(429, 'Too many request')
@ns.param('country', 'Substring Country (ej:ARGE)')
def getCountries():
    try:
        list_parametros = (request.get_json())
        country = list_parametros["country"]
        cur = database.db.cursor()
        list = cur.var(cx_Oracle.STRING)
        cur.callproc('PREDICTIVO.get_country', (country, max_return, list))
    except Exception as e:
        database.init()
        if database.db is not None:
            log.inf('Reconexion OK')
            cur = database.db.cursor()
            list = cur.var(cx_Oracle.STRING)
            cur.callproc('PREDICTIVO.get_country', (country, max_return, list))
        else:
            log.err('Connection Fail')
            list = None
    response = list.getvalue()
    return json.dumps(response), 200

和html:

<html>
    <head>
        <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
    </head>
    <body>
        <input list="lista_paises" id="pais" type="text" placeholder="Pais"/>
        <datalist id="lista_paises"></datalist><br />
    </body>
</html>

<script type="text/javascript">
    // <![CDATA[
    $("#pais").keyup(function (e) {
        if ($("#pais").val().length > 0) {
            $.ajax({
                type: 'POST',
                url: 'http://127.0.0.1:5100/getCountries',
                data: JSON.stringify({ "country": $("#pais").val() }),
                contentType: 'application/json; charset=utf-8',
                dataType: "json",
                success: function (response) {
                    console.log('RESPUESTA:' + response);
                    var parsedJSON = JSON.parse(response);
                    var options = '';
                    for (var i = 0; i < parsedJSON.list_pais.length; i++) {
                        options += '<option value="' + parsedJSON.list_pais[i].pais + '" />';
                    }
                    document.getElementById('lista_paises').innerHTML = options;
                },
                error: function (error) {
                    console.log(error);
                }
            });
        } else {
                 document.getElementById('lista_paises').innerHTML = '';
        }
    });

    // ]]>
</script>

Tags: importlogconfigjsonreturnresponsecountrydatabase