コードリポジトリ
プロジェクトの作成
まずディレクトリを作成し、そのディレクトリで以下のコマンドを実行します。
1 | go mod init quick-start |
ディレクトリ構造
一般的なWebプロジェクトはMVC構造を採用しています。Mはモデル、Vはビュー、Cはコントローラーです。
- Model(モデル)
アプリケーションの核心データとビジネスロジックを管理します。
データベースまたは他のデータソースとのやり取りを行い、データのCRUD操作を処理します。
データに変更があった場合、Viewに更新を通知します。 - View(ビュー)
ユーザーインターフェースの表示を担当し、通常はModelのデータに基づいてレンダリングされます。
ユーザーはViewを通じてアプリケーションと対話できます。
ViewはModelの変化を監視し、自動的に表示を更新します。 - Controller(コントローラー)
ユーザーの入力(例えばボタンをクリック、フォームの送信など)を受け取り、ModelとViewの間のやり取りを調整します。
ユーザーのアクションに応じてModelの方法を呼び出したり、Viewの状態を更新したりします。
コントローラーはModelとViewの間の架け橋となります。
そのため、一般的なディレクトリ構造は以下のようになります。
models/controllers/middleware
modelsにはモデルファイル、controllersにはコントローラーファイル、middlewareにはミドルウェアファイルが格納されています。
一方、viewsは通常フロントエンドプロジェクトとして別途開発されます。
1 | - common/ または utils/ |
データベース
私たちはGORMフレームワークを使用してデータベースを操作します。
データベーステーブルの作成
GORMはデータベーステーブル構造を自動生成することをサポートしています。モデル構造体を定義し、GORMのコードを使用して生成するだけです。
まずはデータベースに接続します。ここでは便利なため、SQLiteを使用します。
1 | // initializers/loadEnv.go |
データベースなどの設定は、.envファイルに保存します。
1 | # Web実行ポート |
Go言語で.envファイルを読み込む方法は以下の通りです。
1 | // initializers/loadEnv.go |
対応するデータベーステーブルのモデルを宣言します。
1 | // models/user.go |
1 | // models/post.go |
コードでデータベーステーブルを生成します。
1 | // migrate/migrate.go |
ユーザー情報テーブル
増減改査
ユーザー情報の基本操作を実現します:追加、削除、変更、および検索。
1 | // user_test.go |
パスワード暗号化
ユーザー情報の安全性を確保するため、ユーザーのパスワードを暗号化処理する必要があります。
1 | import ( |
JWTトークンの作成
JWT(JSON Web Token)は、ネットワークアプリケーション間でセキュアに情報を伝達するためのオープンスタンダードです。JWTトークンを作成することで、ユーザー認証を実現します。
1 | import ( |
テストの実施
投稿情報テーブル
増減改査
投稿情報の基本操作を実現します:追加、削除、変更、および検索。
1 | // /post_test.go |
ネットワークインターフェース
ルートの定義
RESTfulスタイルのAPI:
HTTP メソッド | 操作タイプ | 例 |
---|---|---|
GET | リソースの取得 | ユーザーリストを取得 /api/users |
POST | リソースの作成 | 新規ユーザーを作成 /api/users |
PUT | リソースの更新 | 指定ユーザーを更新 /api/users/{id} |
DELETE | リソースの削除 | 指定ユーザーを削除 /api/users/{id} |
1 | // /main.go |
ログインと登録
ユーザーのログインと登録機能を実装します。これには、認証とアカウント作成が含まれます。
1 | // controllers/user.go |
投稿情報インターフェース
投稿情報の取得、投稿、更新、削除のためのAPIインターフェースを提供します。
1 | // controllers/post.go |
認証とクロスドメインミドルウェア
認証ミドルウェアは、ユーザーの身分を確認するために使用され、特定のリソースにアクセスできるのは承認されたユーザーだけであることを保証します。
クロスドメインミドルウェアは、クロスドメインリクエストの問題を解決するために使用され、異なるドメインからのリクエストがサーバーリソースにアクセスできるようにします。
1 | // middleware/auth.go |
1 | // middleware/cors.go |
APIfoxを使用したテスト
APIfoxはインターフェーステストツールです。
apifox
このケースのインターフェースはすでに共有しています:
インターフェースドキュメント
現在比較的成熟している二次開発フレームワーク
今のところよくわかっていませんが、他の人の回答を見てみてください。
リンク
コミュニティ
これらのプラットフォームで私に連絡することができます:
- bili: 剛子哥forever
- QQグループ: 940263820
- gitee: gitee
- ブログ: malcode-site
- メールアドレス: malguy2022@163.com
- 知乎: 楽妙善哉居士
- CSDN: 飛鳥malred