teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

タイプミス修正

2020/05/30 04:25

投稿

nobonobo
nobonobo

スコア3367

answer CHANGED
@@ -7,7 +7,8 @@
7
7
 
8
8
  ## 追記
9
9
 
10
+ 手元の環境では例示のソースコードを以下のコマンドにて起動した場合、
10
- 手元の環境では例示のソースコードえお以下の起動にて意図通りのハンドラが呼ばれることを確認できました。
11
+ 意図通りのハンドラが呼ばれることを確認できました。
11
12
  ```sh
12
13
  docker run -it --rm -p 8080:80 -v $PWD:/app -w /app golang:alpine go run .
13
14
  ```

1

追記

2020/05/30 04:25

投稿

nobonobo
nobonobo

スコア3367

answer CHANGED
@@ -3,4 +3,40 @@
3
3
 
4
4
  ハンドラの内容を空にするのではなく`log.Println(req)`とでも書けばリクエストが来たかどうかはわかります。
5
5
 
6
- また、相対パスインポートはソース公開するような実装では非推奨なのでご注意ください。
6
+ また、相対パスインポートはソース公開するような実装では非推奨なのでご注意ください。
7
+
8
+ ## 追記
9
+
10
+ 手元の環境では例示のソースコードえお以下の起動にて意図通りのハンドラが呼ばれることを確認できました。
11
+ ```sh
12
+ docker run -it --rm -p 8080:80 -v $PWD:/app -w /app golang:alpine go run .
13
+ ```
14
+
15
+ 気をつけなければいけないのは、ブラウザは"/favicon.ico"をリクエストすることです。
16
+ (例示のソースの場合webpages.TopPageのハンドラが呼び出されます)
17
+ このあたりはブラウザのデバッガを参考にしてください。
18
+
19
+ あとはブラウザキャッシュにリダイレクトするようなコンテンツが残っている場合などもありますので
20
+ キャッシュの削除をお試しください。
21
+
22
+ Goの公開ライブラリを見て貰えばわかりますが、相対パスインポートを使っているものはほとんど見られないはずです。
23
+ なぜなら、Goのimport記述はnode.jsでいうところのpackage.jsonの機能を兼ねているからです。
24
+ 依存解決を正確に行うために公開先のURLを伴うパス名を記述するのがGoの推奨です。
25
+ `go get`がで依存解決またはアプリのインストールができることを「go-gettable」と言いますが、
26
+ Goによるライブラリやアプリケーションがgo-gettableであることは多くのGoユーザーが期待するものです。
27
+ 相対パスインポートを利用してしまうとgo-gettableではなくなってしまいます。
28
+
29
+ なので例示のコードもGo-Moduleをつかってなんらかの有効なimportパスを付与することをお勧めします。
30
+ ```sh
31
+ go mod init github.com/ユーザー名/アプリケーション名
32
+ ```
33
+
34
+ としておいて、
35
+ 以下のようにインポートパスを書くと良いでしょう。
36
+
37
+ ```go
38
+ import(
39
+ "github.com/ユーザー名/アプリケーション名/auth"
40
+ "github.com/ユーザー名/アプリケーション名/webpages"
41
+ )
42
+ ```