2016-07-28 3 views
0

Arduino에서 작게 만나는 스테이션을 실행하려고합니다. 사실 이미 온도와 습도를 모니터링 할 수 있습니다. 그래서 DB에 데이터를 저장하고 Flask를 사용하여 ob 웹 서버를 시각화하기로 결정했습니다. 난 시리얼에서 데이터를 가져 와서 서버에 보내는 파이썬에 작은 스크립트를 만듭니다.Python에서 Flask로 결과가없는 요청을 사용하여 JSON 보내기

def send_JSON_to_server(meteodata): 
    print(meteodata) 
    url = 'http://127.0.0.1:8080/api/meteo' 
    headers = {'Content-Type': 'application/json'} 
    resp = requests.post(url , data = json.dumps(meteodata), headers=headers) 
    print(resp) 

ser = serial.Serial('/dev/cu.usbmodem1411', 9600) 
while True: 
    json_string = ser.readline().decode("utf-8") 
    send_JSON_to_server(json_string) 

그리고 직렬 포트에서 데이터가 채워진 문자열을 받아서 Flask 응용 프로그램으로 보내 봅니다. 서버 측에서 I 코드가 여기

@app.route('/api/meteo/', methods=['GET','POST']) 
def save_meteo_data(): 
    if request.method == 'POST': 
     if request.json: 
      json_dict = request.get_json() 
      save_meteo_data_to_db(json_dict) 
      return 200 
    else: 
     return render_template('test.html'), 999 

와 나는 문제가,가, 내가 바로 405 응답을 GET으로 나에게 그 요청이 나는 방법 만 POST를 떠나 적어도 경우, 서버에 오는 것 가지고와 아파치 로그에 오류가 없습니다. 이 요청을 서버에 보내고 999를 반환하는 것처럼 POST를 수락하지 않았다는 의미입니다. 405가 일반적으로 구성 또는 보안 문제에 연결되어 있으므로 가상 호스트 구성을 볼 수 있습니다. 나는 다른 프로젝트에서 같은 것을 사용하고있다.

WSGIScriptAlias//var/www/meteo/meteo.wsgi 

DocumentRoot /var/www/meteo 
    <Directory /var/www/meteo> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride All 
    Order allow,deny 
    Allow from all 
    </Directory> 

나는 또한 당신이 울부 짖는 볼 수있는 나는, 아두 이노에서 응답 requests.post 후 얻을 JSON의 예를 제공합니다.

{"humidity":57.10,"temperature":28.10,"tempbyfeeling":29.27} 

<Response [405]> 
+0

어떤 오류가 발생합니까? [편집]을 클릭하여 [mcve]를 포함하십시오. – davidism

답변

0

난 당신이 선 볼 수 라우팅 동안, 내 플라스크 응용 프로그램에서 바보 같은 실수를 알아 : 여기

@app.route('/api/meteo/', methods=['GET','POST']) 

및 것은 응답 (301)로 이어질 즉시 GET을 생성하는 실수입니다. 올바른 행은 다음과 같아야합니다.

@app.route('/api/meteo', methods=['GET','POST']) 

하나/삭제해야합니다.

관련 문제