Почему я получил ошибку 404 при соединении двух приложений с флягой - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь соединить два приложения с флягой:

  @app.route("/agent/", methods = ['POST', 'GET'])
  def agent():
  data = request.get_json(force = True)
  if(data):
           if(format(data['option']) == "1"):
              print(data['prepository']['run'])
              requests.post('http://some ip:4001/prepopsitory/', data['prepository'])
            return "hi" 
app.run(host = 'some ip', port = 4998)

и вот это

app = Flask(__name__)
@app.route('/prepository/', methods = ["GET","POST"])
def recibe():
     data = request.get_json(force = True)
     if(data):
          run = data['prepository']['run']
          prepository.formatea(run,1)
          return "hi"  
app.run(host = 'some ip', port = 4001)  

Дело в том, что когда я отправляю приложение Почтальон агенту, оно неработает, он показывает 404 во втором приложении (prepository)

, когда я запускаю построчно в

   @app.route('/prepository/', methods = ["GET","POST"])

говорит

SyntaxError: неожиданный EOF в то время как

Я не знаю, связаны ли эти две проблемы или нет.

РЕДАКТИРОВАТЬ

Теперь я попробовал все, чтоМне приходит в голову, что я обнаружил, что если я отправляю сообщение прямо в репозиторий, оно работает.Учитывая, что я предполагаю, это проблема со связью между двумя приложениями.Также я изменил библиотеку, используемую для получения и отправки, она была flask.request.get_json, сейчас requests.post или requests.get все еще не работает.

1 Ответ

1 голос
/ 13 марта 2019

Я не уверен, как это должно работать, похоже, что оба ваших prepository и agent маршрута настроены для обработки GET и POST запросов, но ваши маршруты этого не делаютразличать входящие GET и POST запросы .По умолчанию, если вы не укажете поддерживаемые методы в вашем маршруте, по умолчанию колба будет поддерживать запрос GET .Однако без проверки входящего запроса ваши маршруты не знают, как обрабатывать входящие запросы, так как поддерживаются GET и POST.Простое условное выражение, подобное следующему: if flask.request.method == 'POST': может использоваться для различения двух типов запросов.Возможно, вы могли бы добавить вышеупомянутую условную проверку, чтобы проверить для каждого типа запроса, чтобы ваши прикладные службы могли отвечать соответствующим образом.Что-то вроде:

  @app.route('/agent', methods=['POST', 'GET'])
  def agent():
      if request.method == "GET":
          msg = "GET Request from agent route"
          return jsonify({"msg":msg})
      else: 
        # Handle POST Request
        data = request.get_json()
        if data:
            # handle data as appropriate

        msg = "POST Request from agent route handled"
        return jsonify({"msg": msg})

app.run(host = 'some ip', port = 4998)

Для целей отладки просто отправьте очень простой ответ json, чтобы проверить правильность конфигурации, так как трудно определить, правильно ли настроен ваш объект данных как есть.Затем, как только обе ваши службы будут проверены на работоспособность, вы сможете приступить к созданию служб приложений для взаимодействия друг с другом.

Надеюсь, это поможет!

...