2016-06-02 1 views
0

Bluemix에 배포 된 Python Flask 응용 프로그램이 있습니다. 로컬로 실행하면 모든 것이 예상대로 작동합니다. 그러나 Bluemix에서 앱을 요청하면 내 요청 경로가 첫 번째 세그먼트를 잃어 404이됩니다.Python Flask request.path가 Bluemix에 배포 될 때 첫 번째 경로 세그먼트를 잃습니다.

예를 들어 /api/v1/items을 요청하고 app.before_request() 함수에 print request.path을 실행하면 /v1/items이 콘솔에 인쇄됩니다.

응용 프로그램 및 환경 세부 정보 :

  • 런타임 : 파이썬 v2.7.10
  • 플라스크 버전 : v0.10.1
  • 플랫폼 : 물론 Bluemix 클라우드 파운드리

단순히 수 경로에 앞에 붙어있는 /blah과 함께 모든 API 요청을 발행하지만, 이는 꽤 비 효과적입니다.

플라스크가 어떻게 내 요청 경로의 첫 번째 부분을 제거하고 있습니까? 왜 이런 일이 일어날 지 그리고/또는 잠재적 인 해결책에 대한 단서가있는 사람이 있습니까?

+0

[편집]을 눌러 [mcve]를 등록하십시오. 어떻게 서버를 구성 했습니까? 가능한 [모든 플라스크 경로에 접두사 추가] 복제본 (http://stackoverflow.com/questions/18967441/add-a-prefix-to-all-flask-routes). – davidism

+0

해당 문제가 중복되지는 않았지만 (청사진을 사용 중입니다.) 여기에 [Mcv 예제가 포함 된 GitHub 저장소] (https://github.com/JakePeyser/flask-path-mcv) –

+0

알기 때문에 내 문제가 확인되었습니다. 그것은 중복이 아니었다. 내 부분에 대한 어리석은 감시. –

답변

0

문제는 내가 REST 클라이언트 (Postman)에서 API를 호출하고 내 호스트 이름에 환경 변수를 사용하고 있다는 것이 었습니다. env var 및 요청 URL 모두에 슬래시가있어서 최종 전송 요청 URL에 도메인 다음에 이중 슬래시가 생깁니다.

따라서 도메인 이름 (예 : myapi.com//api/v1/path) 다음에 두 개의 슬래시가있는 플라스크 응용 프로그램에 API 요청을하면 Python 웹 서버는 첫 번째 경로 세그먼트 (이 경우 api/)를 제거합니다.