Как я могу отправить полезную нагрузку с запросом GET, используя jquery? - PullRequest
0 голосов
/ 06 февраля 2020

Я могу отправить и получить приведенный ниже запрос GET с полезной нагрузкой, используя cURL & Python Flask; но не в состоянии сделать это, используя jquery.

curl --location --request GET 'http://127.0.0.1:5000/image' \
--header 'Content-Type: application/json' \
--data-raw '{"task_id": "7f05f454-385a-415f-9bfb-225d77a16365"}'

Jquery:

    $.ajax({
                type: "GET",
                url: 'http://localhost:5000/image',
                data : JSON.stringify(body),
                contentType: 'application/json',
                success: function(response){
                    console.log("GET returned successfully");
                    console.log(response);
                    document.getElementById("divGetResponse").innerHTML = JSON.stringify(response);

                },
                error: function(error){
                console.log("GET failed");
                    console.log(error);
                }
        });   

Мой код на стороне сервера указан ниже:

@app.route('/image', methods=['GET'])
def getStatus():

   data = request.get_data()

   if not data:
        response = make_response(json.dumps('Invalid task_id'), 400)
        response.headers['Content-type'] = 'application/json'
        response.headers['Access-Control-Allow-Origin'] = '*'
        return response

   if 'task_id' not in request.json or len(request.json['task_id']) == 0:
        response = make_response(json.dumps('Invalid task_id'), 400)
        response.headers['Content-type'] = 'application/json'
        response.headers['Access-Control-Allow-Origin'] = '*'
        return response        

   task = conversionBgTask.AsyncResult(request.json['task_id'])

   if task.info is None:
      response = make_response(jsonify({'task_id' : '<task_id not found>'}), 204)
      response.headers['Content-type'] = 'application/json'
      response.headers['Access-Control-Allow-Origin'] = '*'
      return response

   response = make_response(jsonify(task.info), 200)
   response.headers['Content-type'] = 'application/json'
   response.headers['Access-Control-Allow-Origin'] = '*'
   return response

I понимать, что GET должен иметь только параметры строки запроса. Но если у меня есть требование для разработки такого API, как я могу выполнить такой запрос, используя jquery?

Примечание: я новичок в веб-разработке:)

1 Ответ

1 голос
/ 06 февраля 2020

Вы можете отправить полезную нагрузку с GET-запросом, но не используя браузер, например jQuery или ax ios или fetch.

В вашем примере, поскольку это только один параметр, вы можете отправить его в виде строки запроса , Но, как сказал Клаус, ваш дизайн API требует изменений.

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