Есть ли в Flask RESTful способ отправить файл .json и повторно аргументировать? - PullRequest
0 голосов
/ 10 июня 2019

У меня есть модель keras, которую я хочу использовать для членов команды через API Flask.Эта модель принимает файл .json в качестве входных данных, а также позволяет взвешивать определенные части входных данных, а также сколько их весить.Я хочу, чтобы все участники, запрашивающие эту модель, могли отправлять файл .json, а также аргументы о том, какие части они хотят взвешивать.

Я нахожусь на Mac OS и использую Python 3. Я могу заставить это работать, отправляя ТОЛЬКО файл .json в запросе POST и жестко кодируя аргументы

curl -F 'json=@json_file.json' http://127.0.0.1:5000/model 

иотправив ТОЛЬКО веса в GET-запросе и жестко закодировав json

curl -X GET http://127.0.0.1:5000/ -d weight_col='Birth Year' -d weights=10

, но я не могу заставить их работать как один запрос.

Ниже приведено мое приложение флягикод -

app = Flask(__name__)

api = Api(app)

parser = reqparse.RequestParser()
parser.add_argument('weight_cols', action='append', location='form')
parser.add_argument('weights', action='append', location='form')

class Cluster(Resource):
    def post(self):

        req = json.load(request.files['json'])

        args = parser.parse_args()
        weight_cols = args['weight_cols']
        weights = args['weights']

        cd = ClusterData(json = req)
        cd.gen_df()
        cd.create_array(weight_cols = weight_cols, weight_amt=weights)
        output = cd.cluster_match()

        return output

api.add_resource(Cluster, '/cluster')


if __name__ == "__main__":
    app.run(debug=True)

Я ожидаю, что модель запустится, но я получаю различные сообщения об ошибках в зависимости от того, как я отправляю запрос curl.Если я отправляю его как

curl -F 'json=@john_davidson.json' http://127.0.0.1:5000/cluster -f weight_cols='Birth Year' -f weights=10

, я получаю следующую ошибку

curl: (22) The requested URL returned error: 500 INTERNAL SERVER ERROR
curl: (6) Could not resolve host: weight_cols=Birth Year
curl: (6) Could not resolve host: weights=10

Я попытался отправить аргументы с префиксом -d, но затем я получил ошибку при использовании как -F, так ив то же время.

Я также пытался добавить слово POST в это, но оно либо говорит мне, что подразумевается POST, либо дает то же самое. Не удалось разрешить сообщение host: POST.

Есть ли способ сделать это?Я никогда не использовал Flask, прежде чем пытаться это сделать, но я изучил документацию для Flask RESTful и до сих пор не понимаю, как заставить это работать.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...