サービスコンピューティング --cloudgo-io アプリケーション

Web プログラムの入出力を処理します

I. 概要

小規模な Web アプリケーションを設計して、静的ファイルの提供、JS リクエストのサポート、テンプレート出力、フォーム処理、フィルター ミドルウェアの設計などの機能を実証します。(データベースのサポートは必要ありません)

2. タスク

Web アプリケーションのプログラミング Cloudgo-io。タスク完了の証拠をプロジェクトの README.MD に記載してください。

基本的な要件

  1. 静的ファイルの提供をサポート
  2. シンプルなJSアクセスをサポート
  3. フォームを送信してフォームを出力する
  4. 開発中にプロンプ​​トを表示し/unknown、コードを返す5xx

3. 基本機能の実装

1.静的ファイルサービスをサポート

静的フォルダアクセス(フォルダファイル一覧表示)

ここに画像の説明を挿入します

静的ファイル アクセス (特定のファイルを表示)

ここに画像の説明を挿入します

ハンドル関数コードを設定します。

mx.PathPrefix("/static").Handler(http.StripPrefix("/static/",http.FileServer(http.Dir(webRoot+"/assets/"))))

アクセス リンクに /static プレフィックスが付いている場合は、静的ファイル アクセス モードを開始します。

2. シンプルな JS アクセスをサポート

jsファイル

jquery の非同期アクセスを使用して Cloudio サーバーにアクセスし、テーブルのタイトルを返します。

$(document).ready(function() {
    $.ajax({
        url: "/getHeader"
    }).then(function(data) {
    	alert("simple js acess: " + data);
       $('#head').html(data);
    });
});

goハンドラー関数

http 応答ストリームを使用してテーブル タイトルを返します。

func getHeader(w http.ResponseWriter, req *http.Request) {
	w.Write([]byte("register"))
}

jsファイルを呼び出す

ここに画像の説明を挿入します

ヘッダーを更新する

ここに画像の説明を挿入します

3. フォームを送信し、フォームを出力します

localhost:8080でアクセスするとフォームページに入り、フォームが に送信されますlocalhost:8080/register

<form action="/register" method="post">
        姓名:<input type="text" name="username">
        密码:<input type="text" name="password">
        邮箱:<input type="text" name="mail">
        电话:<input type="text" name="phone">
        <input type="submit" value="提交">
    </form>

localhost:8080/registerpostメソッドのレスポンスを設定する

mx.HandleFunc("/register", register).Methods("POST")

応答関数

まず投稿データを取得し、次にテンプレートを呼び出してパラメーターを含む HTML ファイルを作成し、次に Execute を呼び出して w を通じて HTML ファイルを返します。

func register(w http.ResponseWriter, req *http.Request) {
	req.ParseForm()
	username := req.Form["username"][0]
	password := req.Form["password"][0]
	mail := req.Form["mail"][0]
	phone := req.Form["phone"][0]

	page := template.Must(template.ParseFiles("assets/info.html"))

	page.Execute(w, map[string]string{
		"username":  username,
		"password":  password,
		"mail": mail,
		"phone": phone,
	})
}

情報.html

フォームを送信した後、情報ページに入って送信したばかりのデータを表示し{ {.variable}}、渡されたパラメーターを使用します。

<html>
  <head>
    <link rel="stylesheet" href="css/main.css"/>
    <title>Info</title>
  </head>
  <body>
    
    <table border="1">
      <tr>
        <td>用户名</td><td>邮箱</td><td>电话</td>
      </tr>
      <tr>
        <td>{
   
   {.username}}</td><td>{
   
   {.mail}}</td><td>{
   
   {.phone}}</td>
      </tr>
    </table>
  </body>
  </html>

フォームに記入する

ここに画像の説明を挿入します

送信後にフォームを表示

ここに画像の説明を挿入します

4. /unknown の開発プロンプトを表示し、リターン コード 5xx を返します。

ハンドラー関数の設定

mx.HandleFunc("/unknown", unKnown).Methods("GET")

処理関数内で http の Error 関数を呼び出します。

func unKnown(reqw http.ResponseWriter, req *http.Request) {
	http.Error(reqw, "501 Unkown!", 501)
}

ここに画像の説明を挿入します

4. 要件の引き上げ

1. gzipフィルターのソースコードを解析して読み取る
gzip の概要

Gzip は元々、UNIX システムでのファイル圧縮用に Jean Loup Gailly と Mark Adler によって作成されました。Linux では、接尾辞 Gz の付いたファイルをよく使用しますが、それらは gzip 形式です。現在、インターネット上で一般的なファイル圧縮形式となっています。
HTTP プロトコル上の Gzip エンコードは、Web アプリケーションのパフォーマンスを向上させるために使用されるテクノロジです。トラフィックの多い Web サイトでは、ユーザーが高速に感じられるようにするために gzip 圧縮テクノロジーが使用されることがよくあります。これは通常、WWW サーバーにインストールされている機能を指します。誰かがこのサーバーの Web サイトにアクセスすると、サーバーのこの機能が Web コンテンツを圧縮し、訪問先のコンピューターのブラウザーに送信して表示します。一般に、プレーン テキスト コンテンツは元のサイズの 40% まで圧縮できます。このようにすると、送信が非常に速くなり、URL をクリックしたときにすぐに表示されるという効果があります。当然、サーバーへの負荷も増大するため、この機能モジュールは多くのサーバーに搭載されています。

おすすめ

転載: blog.csdn.net/qq_40135006/article/details/103056470