2012-09-15 78 views
0

我配置我的app.yaml這樣的:配置應用YAML服務JSON文件從靜態目錄的

- url: /data 
    static_dir: templates/data 
    http_headers: 
    Content-Type: application/json 

正如在這裏看到,在GAE config yaml

我做一個AJAX請求,以獲得JSON; 我有一個1KB「sic.json」在那裏,形成正確的(我檢查......)

當我運行dev_appserver, 使用Chrome開發人員工具,我看到返回的響應類型:

Content-Type:application/octet-stream 

當我在jQuery/Javascript中檢索這些結果時,該字符串不被識別爲JSON; 如果迫使我先使用JSON.Parse ...

但是當我真正部署時,應用yaml配置似乎工作;它服務靜態文件作爲JSON所以JSON.Parse是不必要的...

我應該期待這個,該dev_appserver不會像現場部署一樣服務http_headers文件?

+0

聽起來像一個錯誤。您可以提交錯誤報告:http://code.google.com/p/googleappengine/issues/list?can=2&q=type=Defect&colspec=ID%20Type%20Component%20Status%20Stars%20Summary%20Language%20Priority%20Owner %20Log – dragonx

回答

0

我不確定Content-Type是其中一個標題,旨在指定在http_headers內。假設你沒有任何關於模板/數據目錄的任何其他暗示app.yaml的內容,以下將按預期工作:

- url: /data 
    static_dir: templates/data 
    mime_type: application/json 
+0

謝謝;沒有其他參考/數據或模板/數據(但有模板/腳本,模板/樣式等的參考)我嘗試了您的建議;直接使用mime_type。它表現得一樣;當我部署在本地(開發)時仍然提供** application/octet-stream **(不受歡迎),但在實際部署到[production]時提供** application/json **(http://slide.nxsxbrl.appspot.com /)....也許我做錯了什麼? –

+0

也許......我在發佈答案(在Mac OS上)之前自己嘗試過,只是爲了確保。它像一個魅力。你可以臨時將模板/數據移動到靜態/數據或其他東西中,然後按原樣保留'url:/ data'。看看是否有效。如果確實如此,那麼可能會覆蓋模板/數據設置。否則,它可能是你有另一個處理程序映射到相同的/數據網址? – alex

+0

嗨@alex,我嘗試了你的建議,它工作!所以你的理論必須是正確的,也許別的東西會覆蓋模板/數據設置。注意:我不知道爲什麼當我部署到生產時這不是真的;你認爲這是值得研究的,還是你認爲這可能是一個錯誤?另請注意:我切換回http-headers:Content-Type:application/json,並且這也起作用。但是mime_type方法更好。再次感謝! –