這個任務似乎有點愚蠢,因爲我只是開始掌握HTTP。據我所知,HTTP是一種通信協議,這意味着2臺計算機可以使用它進行通信。然而,在互聯網上,似乎所有的HTTP服務器都在提供文件。我可以製作一個不提供文件但僅通過HTTP與客戶端進行通信的服務器嗎?如何使用Flask提供除文件以外的其他內容?
回答
我可以製作一個燒瓶服務器,它不提供文件,只是通過HTTP與客戶端進行通信?
我的理解是,當你收到一個「正常」網絡請求「文件」,真正的情況是,您收到了HTTP響應(這就像一個文本文件),以及HTTP響應包含一個狀態代碼(這是你似乎認爲是HTTP的真實),一個「內容」部分,其中包含「文件」的文本,並且HTTP響應中還有另一行指定接收方計算機應解釋該「內容」部分的內容(例如JSON,或明文,或HTML或XML等)。該行通常看起來像Content-Type: text/html
。
就你而言,你只能指定狀態碼,而將內容部分留空。
由於您沒有發送任何內容,因此您可能會認爲您希望在HTTP響應中指定一個'null'內容類型,但there doesn't seem to be a 'null' content type。不過,由於您不會填寫任何內容,所以設置內容類型並不重要。我所看到的一件事是將其設置爲text/plain
或application/json
。
如果要將結構化數據發送給用戶,通常的做法是將其作爲JSON發送。因此,您可以指定Content-Type
爲application/json
,然後您將格式化回覆的正文(「內容」)爲JSON。
這裏的合劑代碼示例,它可以做到這一點:
@app.route('/get_current_user')
def get_current_user():
return jsonify(
username=g.user.username,
email=g.user.email,
id=g.user.id
)
謝謝,但這隻解決了問題的一部分,我怎麼發送數據,而不是它在文件中。 – PePePlusPlus
我已經更新了我的答案,以包含如何通過HTTP請求發送結構化數據的說明。通常的做法是將數據格式化爲JSON。 –
我認爲這是我會這樣做的方式,謝謝! – PePePlusPlus
- 1. 如何指定除pk或slug以外的其他內容DetailView
- 2. 如何使用Flask提供HTML和JSON內容?
- 3. 使用Tornado,我如何提供靜態文件並從靜態路徑以外的其他目錄提供favicon.ico?
- 4. 如何訪問其他應用程序的內容提供商
- 5. 刪除指定文件夾及其內容以外的文件夾內容
- 6. 如何提供來自其他程序集的內容
- 7. angularjs狀態提供程序在URL中使用除id以外的其他值
- 8. 如何使用其他Activity的內容提供者來刷新ListFragment?
- 9. 組件如何提供其他組件?
- 10. 提供跨網站內容 - JSONP,iframe或其他內容?
- 11. 如何指定除hibernate.properties以外的其他屬性文件
- 12. 如何使用JS加載其他域的文件內容?
- 13. MvvmCross:如何導航到除ViewModel之外的其他內容?
- 14. 除了在數組中循環以外的其他內容?
- 15. MapReduce - 除了字數統計以外的其他內容?
- 16. 如何使用內容提供商
- 17. 是::用於除「global ::」之外的任何其他內容
- 18. 如何在提交後用其他內容替換div內容
- 19. 用Flask提供更改文件
- 20. 我可以使用除輸入類型=「提交」以外的其他內容發送表單嗎?
- 21. 如何解碼Java中的.csr文件以提取其內容
- 22. 如何提供storekit內容?
- 23. 如何從android內容提供商的uri中獲取除片段(行號)以外的所有內容?
- 24. 同時使用內容提供商和文件文件搜索
- 25. 可以使用MapReduce來過濾日誌文件或除計算單個指標之外的其他內容嗎?
- 26. 從項目之外的文件夾提供靜態內容
- 27. 除'bar'圖表之外的任何其他內容highcharts.js
- 28. 我可以將除文件以外的任何其他內容傳遞給SimpleXmlIterator嗎?
- 29. Sitecore:在內容樹內的文件夾內提供文件
- 30. 如何防止用戶在文本框中輸入除正數以外的任何其他內容
你是問,如果你可以只返回文本? –
類型,我想發送不在文件中但在一個變量中的文本。 – PePePlusPlus
如果你想了解網絡服務器的工作方式,你可能會發現這篇文章有趣。以Python爲例。 https://ruslanspivak.com/lsbaws-part1/ –