Skip to content

Commit

Permalink
Update Japanese translation
Browse files Browse the repository at this point in the history
Rewrote to easy to read expression.
Fixed misspelled words.
Omitted too-much commas.
  • Loading branch information
HirofumiTamori committed Jan 3, 2015
1 parent c3a3576 commit 7309afc
Show file tree
Hide file tree
Showing 7 changed files with 31 additions and 30 deletions.
8 changes: 4 additions & 4 deletions ja/04.0.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# 4 フォーム

フォームは我々が普段Webアプリケーションを書く時によく使うツールです。フォームを通して便利にユーザにサーバとデータをやり取りさせることができます。以前にWeb開発をしたことのあるユーザにとってはフォームはとてもお馴染みのものです。しかしC/C++のプログラマからすると、少々ばかり門外漢かもしれません。フォームとは一体何でしょうか?
フォームは普段Webアプリケーションを書く時によく使われるツールです。フォームを通して便利にユーザにサーバとデータをやり取りさせることができます。以前にWeb開発をしたことのあるユーザにとってはフォームはとてもお馴染みのものです。しかしC/C++のプログラマからすると少々取っ付きにくいかもしれません。フォームとは一体何でしょうか?

フォームは表の要素を含むエリアです。フォームの要素はユーザがフォームの中で(例えば、テキストフィールド、コンボボックス、チェックボックス、セレクトボックス等です。)情報を入力する要素です。フォームはフォームタグ(\<form\>)で定義します。

Expand All @@ -10,11 +10,11 @@
...
</form>

Goではformの処理にすでにとても簡単な方法が用意されています。Requestの中にformを専門に処理するものがあります。とても簡単にWeb開発に利用できるものです。4.1節の中でGoがどのようにフォームの入力を処理するかご説明します。いかなるユーザの入力も信用はできないので、これらの入力に対しバリデーションを行う必要があります。4.2節ではどのように普通のバリデーションを行うか、細かいデモンストレーションを行います。
Goではformの処理に簡単な方法が既に用意されています。Requestの中にformを専門に処理するものがあり、簡単にWeb開発に利用できるます。4.1節の中でGoがどのようにフォームの入力を処理するかご説明します。いかなるユーザの入力も信用はできないので、これらの入力に対し検証を行う必要があります。4.2節では一般的にどのように検証を行うか、細かいデモンストレーションを行います。

HTTPプロトコルはステートレスなプロトコルです。ではどのようにして一人のユーザを同定するのでしょうか?また、フォームが複数回送信されてしまわないように保証するにはどうするのでしょうか?4.3と4.4節ではcookie(cookieはクライアントに保存される情報です。handlerとサーバを通る度にやり取りされるデータです。)等をより詳しくご紹介します。
HTTPプロトコルはステートレスなプロトコルです。ではどのようにして一人のユーザを同定するのでしょうか?また、フォームが複数回送信されてしまわないように保証するにはどうするのでしょうか?4.3と4.4節ではcookie(cookieはクライアントに保存される情報です。HTTP Headerを通してサーバーとやり取りされます)等をより詳しくご紹介します。

フォームにはもうひとつ、ファイルをアップロードできるという大きな機能があります。Goはファイルのアップロードをどのように処理しているのでしょうか?大きなファイルをアップロードする際効率よく処理するにはどうすればよいでしょうか?4.5節ではGoによるファイルのアップロード処理の知識を一緒に勉強します。
フォームにはもうひとつファイルをアップロードできるという大きな機能があります。Goはファイルのアップロードをどのように処理しているのでしょうか?大きなファイルをアップロードする際効率よく処理するにはどうすればよいでしょうか?4.5節ではGoによるファイルのアップロード処理の知識を一緒に勉強します。

## 目次
![](images/navi4.png?raw=true)
Expand Down
10 changes: 5 additions & 5 deletions ja/04.1.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# 4.1 フォームの入力を処理する

まずフォームによる送信の例を見てみましょう。以下のようなフォームの内容があるとします。login.gtplというファイルを新規作成します。(新しくディレクトリを作ってその中に入れてください)
まずフォームによる送信の例を見てみましょう。以下のようなフォームのコンテンツがあるとします。login.gtplというファイルを新規作成します。(新しくディレクトリを作ってその中に入れてください)

<html>
<head>
Expand All @@ -15,9 +15,9 @@
</body>
</html>

上で送信されるフォームはサーバの`/login`に渡ります。ユーザが情報を入力し、ログインをクリックした後、サーバのルーティングの`login`にリダイレクトします。まずはこの送信が何のメソッドによるものか判断する必要があります。POSTでしょうかGETでしょうか?
上で送信されるフォームはサーバの`/login`に渡されます。ユーザが情報を入力しログインをクリックした後、サーバのルーティングの`login`にリダイレクトします。まずはこの送信が何のメソッドによるものか判断する必要があります。POSTでしょうかGETでしょうか?

httpパッケージではとても簡単な方法で取得することができます。前のwebの例を基礎にloginページのformデータをどのように処理するか見てみましょう。
httpパッケージにはそれを取得するとても簡単な方法があります。前のwebの例を基礎にloginページのformデータをどのように処理するか見てみましょう。


package main
Expand Down Expand Up @@ -66,7 +66,7 @@ httpパッケージではとても簡単な方法で取得することができ
}


上のコードにおいてリクエストを取得するメソッドは`r.Method`を通じて完了することがわかります。これは文字列型の変数です。GET, POST, PUT等のmethod情報を返します。
上のコードにおいてリクエストのメソッドを取得するには`r.Method`だけで済むことがわかります。これは文字列型の変数です。GET, POST, PUT等のmethod情報を返します。

login関数では`r.Method`に従ってログイン画面を表示するのかログインロジックを処理するのかが判断されます。GETメソッドによるリクエストの場合はログイン画面を表示し、その他のメソッドによるリクエストではログインロジックを処理します。例えばデータベースを検索したり、ログイン情報を検証したりといった事です。

Expand All @@ -76,7 +76,7 @@ login関数では`r.Method`に従ってログイン画面を表示するのか

図4.1 ユーザログイン画面

我々がユーザ名とパスワードを入力しても、サーバは何も出力しません。なぜでしょうか?デフォルトでは、Handlerの中ではformの内容を自動的に解析しないからです。必ず明示的に`r.ParseForm()`をコールした後でなければ、このフォームのデータに対して操作を行うことはできません。コードを少し修正して、`fmt.Println("username:", r.Form["username"])`の前に`r.ParseForm()`という一行を追加してください。再コンパイルしてもう一度入力、送信してみると、今度はサーバがあなたの入力したユーザ名とパスワードを出力するはずです。
我々がユーザ名とパスワードを入力してもサーバは何も出力しません。なぜでしょうか?デフォルトではHandlerの中ではformの内容を自動的に解析しないからです。必ず明示的に`r.ParseForm()`をコールした後でなければ、このフォームのデータに対して操作を行うことはできません。コードを少し修正して、`fmt.Println("username:", r.Form["username"])`の前に`r.ParseForm()`という一行を追加してください。再コンパイルしてもう一度入力、送信してみると、今度はサーバがあなたの入力したユーザ名とパスワードを出力するはずです。

`r.Form`では全てのリクエストのデータが含まれています。例えばURLの中のquery-string、POSTのデータ、PUTのデータなどです。URLのquery-stringフィールドとPOSTが衝突する場合はsliceに保存されます。これには複数の値が保存されています。Goのオフィシャルドキュメントでは次のバージョンでPOST、GETといったデータは分離されると述べています。

Expand Down
Loading

0 comments on commit 7309afc

Please sign in to comment.