我有一個Python 3.4 CherryPy Web應用程序,它帶有一個在YouTube URL上執行一些處理的POST。CherryPy通過URL將查詢參數作爲POST中的單個參數使用
POST localhost:8080/api/url=https://www.youtube.com/watch?v=WS6-vI70oc0
如果我使用YouTube網址與查詢參數,例如:
POST localhost:8080/api/url=https://www.youtube.com/watch?v=WS6-vI70oc0&list=RDGMEM_v2KDBP3d4f8uT-ilrs8fQVMWS6-vI70oc0
CherryPy的對待這個查詢參數(&列表)作爲查詢參數給我POST API。從我的API輸出:
def POST(self, youtube_url=None, **kwargs):
print('YOUTUBE URL: %s'%youtube_url)
print('kwargs: %s'%kwargs)
輸出:
YOUTUBE URL: https://www.youtube.com/watch?v=WS6-vI70oc0
kwargs: {'list': 'RDGMEM_v2KDBP3d4f8uT-ilrs8fQVMWS6-vI70oc0"'}
不過,我想整個字符串被視爲youtube_url,不CherryPy的自動連字符段分成查詢參數。
從Javascript方面,我嘗試encodeURI和周圍的整個URL與「」,這並沒有改變CherryPy的行爲。
的JavaScript/HTML端:
//input box in HTML:
<input type="text" class="form-control" id="youtubeUrlString" value="https://www.youtube.com/watch?v=2XNEmxl2rYs" style="height: 34px">
//get input box value in javascript and post
var urlString = document.getElementById('youtubeUrlString').value;
req.open('POST', api_url + '?youtube_url=' + encodeURI(urlString) + '"');
難道你不能只用base64在[btoa](https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/btoa)的url中進行編碼嗎?在python中使用[this](https://docs.python.org/2/library/base64.html)來解碼它。 – RickyA
你確定你正在使用POST嗎?我可以看到發佈它的javscript代碼嗎?你提到你正在使用'encodeURI'函數。 – cyraxjoe
我將用Javascript代碼編輯問題。 @RickyA我會嘗試,謝謝。 – Sevag