2016-08-11 2 views
0

멀티 플라이 서비스 URL을 정의했으며, 모두 동일한 코드를 실행합니다. 나는 아래의 매개 변수를 사용하여 서비스를 호출한다면파이썬 플라스크 자동 리다이렉트 메시지

@service.route('/get_info/env=<path:env>/starttime=<int:starttime>/endtime=<int:endtime>/entire=<entire>/over=<over>/stage=<stage>', defaults={'name': None}, strict_slashes=False) 
@service.route('/get_info/dir=<path:dir>/starttime=<int:starttime>/endtime=<int:endtime>/entire=<entire>/over=<over>', defaults={'stage': 'ABC', 'name': None}, strict_slashes=False) 

@servicelog.operation('GetInfo') 
def get_deployment_info(env, starttime, endtime, finished, stage, fleetwide, hostname): 
global _misc 
try: 
    log.info("Dir: %s, Starttime: %d, Endtime: %d, name: %s, finished:%s, Stage:%s, Fleetwide: %s", dir, starttime, endtime, name,over, stage, entire) 
    result = obj.get_info(dir, starttime, endtime, entire, over, stage, name) 

, 그것은 예상대로 작동 그러나

http://<endpoint>/get_info/dir=home/user/test/starttime=1470439200/endtime=1470856027/entire=true/over=true 

나는 아래 매개 변수를 사용하여 서비스를 호출 얻는 경우에, 나는 다시 직접 메시지가 :

http://<endpoint>/get_info/dir=home/user/test/starttime=1470439200/endtime=1470856027/entire=true/over=true/stage=ABC 

내가 오류가

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> 
<title>Redirecting...</title> 
<h1>Redirecting...</h1> 
<p>You should be redirected automatically to target URL: <a href="http://endpoint/get_info/dir%3Dhome/user/test/starttime%3D1470439200/endtime%3D1470856027/entire%3Dtrue/over%3Dtrue">http://endpoint/get_info/dir%3Dhome/user/test/starttime%3D1470439200/endtime%3D1470856027/entire%3Dtrue/over%3Dtrue</a>. If not click the link.%  
,536입니다

내가 여기서 잘못된 것을하고 있습니까? 나는 리다이렉션과 같은 어떤 메시지도 기대하지 않는다. url이 사용되는 것과 관계없이 메소드를 실행해야합니다.

답변

0

경로를 만드는 방법은 실제로 깨끗하지 않습니다. 인수를 가진 GET 요청은 http://server/route?arg1=val1&arg2=val2& .. 등의 형식을 취해야합니다. 일부 특수 문자 또는 일부 구문 분석 문제가이 오류의 원인입니다.

GET 요청 처리기에서 구문 분석 된 인수 1의 값 (상단에 from flask import request을 잊지 마세요)을 검색하려면 request.args.get ('arg1')을 사용하십시오. 전체 문자열을 사용하려면 request.query_string

this 그래서 질문을보십시오.

+0

답장을 보내 주셔서 감사합니다. 좀 더 파고 들었다. 'stage = ABC'를 전달하면 두 번째 대체 URL에 대해 ABC로 stage의 기본값을 정의했습니다. 두 번째 대체 URL의 기본값을 읽으려고하는 이유를 모르겠습니다. 다른 모든 값에도 적용됩니다. – learningMyWayThru

관련 문제