2017-07-06 42 views
0

這個任務似乎有點愚蠢,因爲我只是開始掌握HTTP。據我所知,HTTP是一種通信協議,這意味着2臺計算機可以使用它進行通信。然而,在互聯網上,似乎所有的HTTP服務器都在提供文件。我可以製作一個不提供文件但僅通過HTTP與客戶端進行通信的服務器嗎?如何使用Flask提供除文件以外的其他內容?

+0

你是問,如果你可以只返回文本? –

+0

類型,我想發送不在文件中但在一個變量中的文本。 – PePePlusPlus

+1

如果你想了解網絡服務器的工作方式,你可能會發現這篇文章有趣。以Python爲例。 https://ruslanspivak.com/lsbaws-part1/ –

回答

1

我可以製作一個燒瓶服務器,它不提供文件,只是通過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/plainapplication/json


如果要將結構化數據發送給用戶,通常的做法是將其作爲JSON發送。因此,您可以指定Content-Typeapplication/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 
    ) 

來源:Return JSON response from Flask view

+0

謝謝,但這隻解決了問題的一部分,我怎麼發送數據,而不是它在文件中。 – PePePlusPlus

+0

我已經更新了我的答案,以包含如何通過HTTP請求發送結構化數據的說明。通常的做法是將數據格式化爲JSON。 –

+0

我認爲這是我會這樣做的方式,謝謝! – PePePlusPlus

相關問題