技術共有

プロジェクト/コード仕様と Apifox の概要

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

目次

目次

1. プロジェクトの仕様:

(1) プロジェクトの構成:

(2) 送信データオブジェクト

2. コード仕様:

(1) データベースの命名規則:

(2) アノテーション仕様:

(3) ネーミング仕様:

(4) フロントエンドとバックエンドの仕様:

(5) その他の仕様:

3. Apifox の使用:

(1) ダウンロードとインストール:

(2) 新しいプロジェクトを作成し、チームメイトを招待します。

(3) インターフェース文書の仕様書作成

4. デバッグ機能(バックエンドの知識が必要)

5. テストカテゴリー

6. 注:

(一人の人間が国を支配することはできません!!!)


1. プロジェクトの仕様:

(1) プロジェクトの構成:

具体的なものは次のとおりです。

(1) エンティティ層: エンティティ層には、データベース内のオブジェクトに対応する特定のオブジェクト エンティティが格納されます。

(2) DAO 層: (2 つの層 (dao のインターフェース層と dao の実装層) に再分割できます) は、データベースと対話する層であり、データベースの追加、削除、変更、およびクエリ操作が含まれます。

(3) サービス層 (2 つの層 (サービス インターフェイス層とサービス実装層) に細分化できます): 主にビジネス モジュールの論理アプリケーション設計を担当します。

(4) コントローラー層: コントローラー層は、特定のビジネス モジュール プロセスの制御を担当します。コントローラー層は、フロントエンドとバックエンドの対話、フロントエンド要求の受け入れ、サービス層の呼び出し、サービス層から返されるデータの受信を担当します。サービス層、そして最後に特定のページとデータをクライアントに返します。

(5) Util 層: ツール層には、一般的に使用されるツール クラスが配置されます。たとえば、いくつかの一般的なメソッドを util 関数として記述でき、コード全体を簡素化できます。

(6) 例外層: 統合された戻り例外層を作成できます。

(7) フィルタ層: アイデンティティ認証を均一にフィルタリングするなどのフィルタ層。フィルタが通過しない場合はゲスト モードのみになります。

(2) 送信データオブジェクト

DTO は、フロントエンド リクエストによって送信されるデータ構造です。

VO は、フロントエンドによって送信されたリクエストに応じてバックエンドによって返される応答です。

PO は、オブジェクト エンティティとデータベース オブジェクト テーブルの間の実際の対応関係です。

BOは、業務処理プロセスにおけるオブジェクトエンティティです。

2. コード仕様:

中国語のピンインではなく、英語で名前を付けてください。

派手ではなく、わかりやすくすること。

通常の名前の代わりにこぶの名前を使用します。

一定の間隔で改行し、長い段落を書かないでください。

個人主義ではなく、注釈を付けてください。

Java 言語コーディング仕様 - Java 言語コーディング仕様 (中国語版) - オンライン ドキュメント - JAVA プログラミング資料 Niubi Station (javanb.com)アイコンデフォルト.png?t=N7T8http://doc.javanb.com/code-conventions-for-the-java-programming-language-zh/index.html#312

Java 自体で特別な意味を持つキーワードや予約語などは使用しないでください。 ! !

(1) データベースの命名規則:

(1) テーブル名は一意であり、複数のテーブル名で同じ名前を使用することはできません。

(2) テーブル名は、大文字や特殊文字の使用を避け、「user_info」または「tbl_user」を使用してください。

(3) キーワードと矛盾しないようにしてください。like、desc、range、match、delayed などの予約語を無効にするには、MySQL 公式の予約語を参照してください。

(4) データベースフィールド名:「user_id」、「user_name」、「user_password」、「user_register_time」、「user_login_time」など、26 文字の英字(大文字と小文字を区別)とアンダースコア「_」で構成されます。

(5) 主キーと外部キーの仕様:

主キーのインデックス名は pk_field 名、一意のインデックス名は uk_field 名、通常のインデックス名は idx_field 名です。
例証します: pk_ は主キー、uk_ は一意のキー、idx_ はインデックスの略語です。

主キー: pk_+テーブル名
例えば:pk_main
外部キー:fk_+スレーブテーブル名+_+メインテーブル名
例えば:fk_sub_main

(6) 10 進数型は 10 進数であり、float および double は禁止されています。
(7) テーブルに必要な 3 つのフィールド: id、create_time、update_time。

(2) アノテーション仕様:

(1) クラスのアノテーション:

クラス アノテーション (Class) は主に、クラスの用途と、作成者、作成日のバージョン、パッケージ名などの情報を宣言するために使用されます。

/**
* @バージョン: V1.0
* @著者: フェンドー
* @クラス名: ユーザー
* @パッケージ名: ユーザー
* @description: これはユーザークラスです
* @データ: 2024-07-01 12:20
 **/

(2) メソッドのアノテーション (コンストラクター):

メソッド内の単一行コメントの場合は、コメントされたステートメントの上に新しい行を開始し、// comment を使用します。メソッド内の複数行のコメントには /* */ を使用します
コメントはコードと一致する必要があります。すべての抽象メソッド (インターフェース内のメソッドを含む) には、戻り値とパラメーター例外の説明に加えて、メソッドが何を行うか、どのような関数を実装するかを示す必要があります。 メソッドのアノテーション (コンストラクター) を使用して、クラスのパラメーター、戻り値、その他の情報を宣言することもできます。

/**
* @著者: フェンドー
* @メソッド名: addUser
* @description: ユーザーを追加します
* @パラメータ: xxxx
* @return: 文字列
* @スロー:
*/

(3) コードブロックのコメント: コードの特定の部分の目的を説明します。

/**
* ユーザーをインスタンス化する
* xxxxxxxxx
 */
ユーザー user=新しいユーザー();

(4) 単一文のコメント: 個々のコードをコメントします。

ユーザー user=new User() // ユーザーをインスタンス化します。

(3) ネーミング仕様:

他の人が理解できるように名前を付け、キャメルケースで名前を付け、大文字と小文字を区別します。

(1) クラス名は UpperCamelCase スタイルを使用します。
例: UserController、FileController、BookService
(2) メソッド名、パラメータ名、メンバー変数、ローカル変数はすべて lowerCamelCase スタイルを使用します。
例: getUserName()、userLogin()、getMessage();
(3) 定数の名前はすべて大文字にする必要があり、単語はアンダースコアで区切る必要があり、意味を完全かつ明確に表現するように努め、名前が長すぎないようにしてください。
例: MAX_STOCK_COUNT / CACHE_EXPIRED_TIME
(4) 抽象クラス名は Abstract または Base で始まり、例外クラス名は Exception で始まり、テスト対象のクラスの名前で終わります。
(5) パッケージ名は一律に小文字である必要があり、ドット区切り文字の間に自然な意味を持つ英単語が 1 つだけ存在する必要があります。パッケージ名を統一して使用する 奇数
ただし、クラス名に複数の意味がある場合は、クラス名に複数形を使用できます。
(6) サービス/DAO 層メソッドの命名規則:
1) 単一のオブジェクトを取得するメソッドには、接頭辞 get が付きます。
2) 複数のオブジェクトを取得するメソッドには、listObjects のように先頭に list が付けられ、複数形で終わります。
3) 統計値の取得方法には先頭に count が付きます。
4) 挿入メソッドには、save/insert という接頭辞が付きます。
5) 削除メソッドには、remove/delete という接頭辞が付きます。
6) 変更されたメソッドには、先頭に update が付きます。
(7) ドメイン モデルの命名規則:
1) データ オブジェクト: xxxDO、xxx はデータ テーブルの名前です。
2) データ転送オブジェクト: xxxDTO、xxx は業務分野に関連する名前です。
3) 表示オブジェクト: xxxVO、xxx は通常 Web ページの名前です。
(8) すべての整数パッケージング クラス オブジェクト間 値の比較 、すべては、equals メソッドを使用して比較します。
例証します: 整数 var = ? の場合 -128~127 IntegerCache.cache で Integer オブジェクト間の代入が生成され、既存のオブジェクトが再利用されます。この範囲内の整数値は == を使用して直接判断できますが、この範囲外のデータはすべてヒープ上に生成されません。
これは、既存のオブジェクトを使用する場合の大きな落とし穴です。判断には、equals メソッドを使用することをお勧めします。
(9) 浮動小数点数間の等価性を判定する場合、基本データ型の == による比較、ラップされたデータ型のイコールによる比較はできません。 BigDecimal の等価比較では、equals() メソッドの代わりに CompareTo() メソッドを使用する必要があります。
良い例:
(1) 誤差範囲を指定します。2 つの浮動小数点数の差がこの範囲内にある場合、それらは等しいと見なされます。
浮く 1つの = 1.0F - 0.9F ;
浮く b = 0.9F - 0.8F ;
浮く 差分 = 1e-6F ;
もし ( 数学 . 腹筋 ( 1つの - b ) < 差分 ) {
システム . . 印刷 ( "真実" );
}
(2) BigDecimal を使用して値を定義し、浮動小数点数演算を実行します。
ビッグデシマルa = 新しい ビッグデシマル ( "1.0" );
ビッグデシマルb = 新しい ビッグデシマル ( "0.9" );
ビッグデシマル c = 新しい ビッグデシマル ( "0.8" );
ビッグデシマル x = 1つの . 減算する ( b );
ビッグデシマルy = b . 減算する ( c );
もし ( バツ . 比較する ( ええ ) == 0) {
システム . . 印刷 ( "真実" );
}
識別子の種類命名規則
パッケージ一意のパッケージ名のプレフィックスは常にすべて小文字の ASCII 文字であり、トップレベルのドメイン名 (通常は com、edu、gov、mil、net、org、または 1981 年に指定された国を識別する英語の 2 文字コード) です。 ISO 3166規格。パッケージ名のその後の部分は、さまざまな組織の内部命名規則に従って異なります。このような命名規則では、特定のディレクトリ名の構成を使用して、部門、プロジェクト、マシン、またはログイン名を区別することがあります。日本語
com.apple.quicktime.v2
edu.cmu.cs.bovik.チーズ
クラス命名規則: クラス名は名詞であり、大文字と小文字が混合され、各単語の最初の文字が大文字になります。クラス名は簡潔でわかりやすいものにしてください。完全な単語を使用し、略語は避けてください (URL や HTML など、略語がより広く使用されている場合を除く)クラス Raster;
クラス ImageSprite;
インターフェース命名規則: 大文字と小文字の規則はクラス名に似ています。インターフェース RasterDelegate;
インターフェースの保存;
メソッドメソッド名は動詞であり、大文字と小文字が混合され、最初の単語の最初の文字が小文字、後続の単語の最初の文字が大文字になります。キャメルケースのネーミング走る();
速く走る();
背景を取得します。
変数変数名を除き、クラスやクラス定数を含むすべてのインスタンスは大文字と小文字が混合され、最初の単語の最初の文字は小文字、後続の単語の最初の文字は大文字になります。変数名は、構文的には許可されていますが、アンダースコアまたはドル記号で始めることはできません。
変数名は短く、わかりやすいものにする必要があります。変数名は覚えやすい、つまり目的がわかるように選択する必要があります。

リスト<User>ユーザーリスト;

文字列ユーザー名;

定数クラス定数と ANSI 定数の宣言はすべて大文字で、単語をアンダースコアで区切って宣言する必要があります。 (エラーが発生しやすいため、ANSI 定数は避けてください)静的最終int MIN_WIDTH = 4;
静的最終int MAX_WIDTH = 999;
静的最終int GET_THE_CPU = 1;

(4) フロントエンドとバックエンドの仕様:

(1) リクエストメソッド:具体的なオペレーションの定義は次のとおりです。
a) GET: サーバーからリソースを取得します。 (選択操作として見ることができます)
b) POST: サーバー上に新しいリソースを作成します。 (挿入操作とみなすことができます)
c) PUT: サーバー上のリソースを更新します。 (更新操作として見ることができます)
d) DELETE: サーバーからリソースを削除します。 (削除操作とみなすことができます)
(2)ご希望の返品情報:
  • code:httpステータスコード
    • 自分で定義した追加のエラーがある場合は、独自のエラー コードを使用することも検討できます。
  • message:対応するテキスト記述情報
    • エラーが発生した場合は、特定のエラー情報が表示されます。
    • それ以外の場合、操作は成功し、通常は簡略化された処理で OK が返されます。
  • data
    • データに対応するjson文字列
      • の場合配列の場合、対応する最外層は次のようになります。[]list
      • の場合物体の場合、対応する最外層は次のようになります。{}dict
  1. {
  2. "code": 200,
  3. "message": "new user has created",
  4. "data": {
  5. "id": "user-4d51faba-97ff-4adf-b256-40d7c9c68103",
  6. "firstName": "crifan",
  7. "lastName": "Li",
  8. "password": "654321",
  9. "phone": "13511112222",
  10. "createdAt": "2016-10-24T20:39:46",
  11. "updatedAt": "2016-10-24T20:39:46"
  12. ......
  13. }
  14. }

(3) レスポンスステータスコード

エラー:

  • 1xx (情報ステータス コード):受信したリクエストが処理中であることを示します。
  • 2xx (成功ステータスコード) :リクエストが正常に処理されたことを示します。 200 は、リクエストが正常に返されたことを意味します。
  • 3xx (リダイレクトステータスコード): このリクエストを完了するにはフォローアップ アクションが必要です。
  • 4xx (クライアントエラーステータスコード) : リクエストに構文エラーが含まれているか、リクエストを完了できないことを示します。 400、404、401、403 はすべて、リクエストの送信時にフロントエンドが原因で発生するエラーです。フロントエンドで最初に問題を確認する必要があります。そうしないと、バックエンドの書き込みでエラーが発生する可能性があります。
  • 5xx (サーバーエラーステータスコード) : サーバーがリクエストを処理中にエラーが発生しました。 バックエンドの問題、例外がスローされる可能性がある、サーバーエラーなど。

2XX の成功


200 ok (リクエストは成功しました)
204 コンテンツがありません (リクエストは成功しましたが、結果は返されませんでした)
206 部分コンテンツ (クライアントがリソースの一部を要求し、サーバーが正常に応答して、一連のリソースを返します)


3XX リダイレクト


301 永久に移動 (永久リダイレクト)
302 件見つかりました (一時リダイレクト)
303 see other (リクエストに対応するリソースには別の URI があるため、GET を使用する必要があることを示します)
要求されたリソースを取得するためのメソッド)
304 変更されていません (クライアントがリソースへの条件付きアクセスを使用すると、サーバーはリソースを見つけますが、リクエストの条件が条件を満たさないことを示します。リダイレクトとは関係ありません)
307 一時リダイレクト (302 と同じ意味)


4XXクライアントエラー


400 不正なリクエスト (リクエスト メッセージに構文エラーがあります)
401 不正 (認証が必要 (最初の返信) または認証失敗 (2 回目の返信))
403 禁止 (リクエストはサーバーによって拒否されました)
404 見つかりません (要求されたリソースがサーバー上に見つかりません)


5XXサーバーエラー


500 内部サーバー エラー (サーバーがリクエストを実行したときにエラーが発生しました)
503 サービスを利用できません (サーバーが過負荷になっているか、メンテナンスのためにダウンしているため、リクエストを処理できません)

(5) その他の仕様:

(1) HTTP リクエストがボディを通じてコン​​テンツを送信する場合、長さを制御する必要があります。最大長を超えると、バックエンドの解析でエラーが発生します。
例証します: nginx のデフォルトの制限は 1MB で、tomcat のデフォルトの制限は 2MB です。ビジネスでより大きなコンテンツを転送する必要がある場合は、サーバー側の制限を増やすことができます。
(2) finally ブロックでは return を使用しないでください
例証します: try ブロック内の return ステートメントが正常に実行された後、すぐには戻りませんが、finally ブロック内のステートメントの実行が続行されます。ここに return ステートメントがある場合は、ここで直接戻り、 内のリターン ポイントを容赦なく破棄します。ブロックしてみてください。
(3) ビジネスシーンにおいて 例外をスローしてキャッチされた後 ロールバックする必要がある場合 トランザクションは必ず手動でロールバックしてください。
(4) ログを使用して情報を記録できます。 ロギングフレームワークを使用する (SLF4J、 JCL(ジャカルタコモンズロギング) のAPI。

3. Apifox の使用:

(1) ダウンロードとインストール:

リンク: リンクをクリックして apifox を直接ダウンロードします (最新バージョンをダウンロードするだけです)。 Apifox - API ドキュメント、デバッグ、モック、テストのための統合コラボレーション プラットフォーム。インターフェースドキュメント管理、インターフェースデバッグ、モック、自動テストなどの機能を備え、インターフェース開発、テスト、共同デバッグの効率が10倍向上します。最高のインターフェース文書管理ツールおよびインターフェース自動テストツール。アイコンデフォルト.png?t=N7T8https://apifox.com/

(2) 新しいプロジェクトを作成し、チームメイトを招待します。

1. チームを作成し、新しいプロジェクトを作成します。

チームメイトを招待する

2. 新しいインターフェイスと新しいデータ モデルを作成します。

(1) リクエストが何であるかを判断します (POST、GET、PUT、DELETE)。

(2) テスト環境は統一する必要があり、異なる環境では URL が異なります。

(3) リクエストパラメータは次のように設定されます。

どのようなパラメータが設定されていますか? パラメータの例、中国語名、およびパラメータの説明を提供してください。

(4) 応答は次のように構成する必要があります。

たとえば、さまざまな状態でどのような種類の情報が返されるかを指定する必要があり、成功例と例外例が存在する必要があります (フロントエンドの便宜のため)。

  1. {
  2. "code": 200,
  3. "message": "登入成功",
  4. "data": {
  5. "user_id": 27,
  6. "user_name": "孟霞",
  7. "user_password": "123456",
  8. "user_age": "15",
  9. "user_photo": "http://dummyimage.com/400x400",
  10. "user_last_time": "1996-12-11 09:03:49",
  11. "user_indentity": "messager",
  12. "user_birthday": "2024-02-23"
  13. }
  14. }

(5) データモデルは次のように作成できます。

複数のデータ モデルを作成できます。これは、応答フィールドを返すのに非常に便利であり、フロントエンドでデータ フィールドを表示するのにも便利です。

(3) インターフェース文書の仕様書作成

apifox の書き込み仕様と具体的な詳細。

Apifox クイック スタート | Apifox ヘルプ ドキュメントアイコンデフォルト.png?t=N7T8https://apifox.com/ヘルプ/

(1) API インターフェース文書の冒頭に序文が必要です。このセクションには次の内容を含めることができます。

  • API インターフェースの名前とバージョン番号
  • APIインターフェースの機能と目的
  • API インターフェースの設計目的と原則
  • APIインターフェースの適用範囲と制限事項

このパートの目的は、読者に API インターフェースの基本的な状況と背景情報を理解してもらうことです。

(2) インターフェース一覧

次に、API インターフェイス ドキュメントで、すべてのインターフェイスをリストする必要があります。各インターフェイスには次の情報が含まれている必要があります。

  • インターフェース名と説明
  • リクエストメソッド(GET、POST、PUT、DELETEなど)
  • リクエストパス(URL)
  • リクエストパラメータ(Queryパラメータ、Bodyパラメータを含む)
  • リクエストの例 (リクエスト ヘッダーとリクエスト本文を含めることができる完全な例)
  • 応答ステータスコードと説明
  • レスポンスパラメータ(ヘッダパラメータ、ボディパラメータを含む)
  • 応答の例 (応答ヘッダーと応答本文を含めることができる完全な例)

このセクションの目的は、読者が各インターフェイスの基本情報をすぐに理解し、ドキュメント内の例に基づいてインターフェイスを正しく使用できるようにすることです。

(3) リクエストパラメータとレスポンスパラメータの説明

インターフェイスのリストの後に、各インターフェイスのリクエスト パラメーターと応答パラメーターを詳しく説明する必要があります。このセクションには次の情報を含める必要があります。

  • パラメータ名と説明
  • パラメータのタイプと形式
  • それは必須であり、デフォルト値ですか?
  • パラメータの例

パラメーターの型と形式については、標準のデータ型と形式を使用することも、特定の状況に応じて独自のデータ型と形式を定義することもできます。必須かどうか、デフォルト値は実際の状況に基づいて決定する必要があります。

(4) エラーコードの説明

API インターフェースを使用すると、エラーが発生することがあります。この場合、エラーの種類と原因を説明するためにエラー コードを返す必要があります。したがって、API インターフェイスのドキュメントでは、考えられるすべてのエラー コードを指定する必要があります。このセクションには次の情報を含める必要があります。

  • エラーコードと説明
  • エラーの種類と原因
  • インターフェースから返されるエラーコードの例

このセクションの目的は、読者が考えられるすべてのエラーの種類と原因を理解し、ドキュメント内の例に基づいてエラーを正しく処理できるようにすることです。

4. デバッグ機能(バックエンドの知識が必要)

2 分で Java でデバッグする方法を教える [IDEA での Java]_ケースを使わずに Java プロジェクトでデバッグする方法 - CSDN ブログアイコンデフォルト.png?t=N7T8https://blog.csdn.net/qq_43436117/article/details/113859737

5. テストカテゴリー

(1) 具体的な操作:

テストクラスを定義する

提案:

テストクラス名: テスト対象クラス名 Test CalculatorTest
パッケージ名: xx.xx.xx.test cn.itcast.test
テストメソッドの定義: 独立して実行可能

提案:

メソッド名: テストメソッド名 testAdd()
戻り値: void
パラメータリスト: 空のパラメータ
@Testをメソッドに追加する

Junit 依存関係環境をインポートする

判定結果:

赤: 失敗しました
緑: 成功
通常、Assert クラスの静的メソッドassertEquals(expected,actual)を使用して、期待される結果と出力結果を処理します。

Assert.assertEquals(3, 結果);

2 つのパラメータは次のとおりです: 期待値 プログラム結果値

テスト結果の処理に Assert.assertEquals(expected,actual) を使用するのはなぜですか?

赤は失敗を表し、緑は正しさを表すと規定しているからです。テスト メソッドを使用してコンピュータの加算メソッドをテストする場合、この結果のみを出力します (例外が発生しないと仮定して)。 1 と 3 を入力すると、結果 4 が得られると期待されますが、出力されるものは 2 で、取得されると期待されるものは 4 です。この時点で得られた結果は期待を満たしていませんが、実行結果はまだ緑色です。 (正しいことを表す), それは正しくありませんか? このとき、最後に Assert のassertEquals メソッドを使用して、期待値とプログラムが出力した結果値を比較し、それらが等しい場合は緑色になります。等しくない場合は赤になります。この時間は緑と赤の定義を満たしていますか?

  1. package cn.itcast.test;
  2. import cn.itcast.junit.Calculator;
  3. import org.junit.Assert;
  4. import org.junit.Test;
  5. public class CalculatorTest {
  6. /**
  7. * 测试add方法
  8. */
  9. @Test
  10. public void testAdd(){
  11. Calculator c = new Calculator();
  12. int a = 1, b = 2;
  13. int result = c.add(1, 2);
  14. Assert.assertEquals(3, result);
  15. }
  16. /**
  17. * 测试sub方法
  18. */
  19. @Test
  20. public void testSub(){
  21. Calculator c = new Calculator();
  22. int a = 1, b = 2;
  23. int result = c.sub(1, 2);
  24. Assert.assertEquals(-1, 2);
  25. }
  26. }

@前に
テストメソッドの前に @Before を追加すると、このメソッドはすべてのテストメソッドが実行される前に自動的に実行されます。

@後
テストメソッドの前に @After を追加するとリソース解放メソッドとなり、すべてのテストメソッドが実行された後に自動的に実行されます。

@Before で装飾されたメソッドは、テスト メソッドが実行される前に実行されます。

@After で装飾されたメソッドは、テスト メソッドの実行後に実行されます。

@Before または @After で変更されたメソッドは、テスト メソッドが発生するかどうかに関係なく実行されます。

(2) Testクラスプラグインを自動生成する

Java プロジェクトの単体テストを自動生成するための推奨プラグイン - Tencent Cloud Developer Community - Tencent Cloud (tencent.com)アイコンデフォルト.png?t=N7T8https://cloud.tencent.com/developer/article/1910893

6. 注:

(1) バックエンドのインターフェース文書を書くときは、フロントエンドが理解できるように明確に書く必要があります。自分で理解できるように書く必要はありません。書き換えられた名前とデフォルト値のインターフェイス応答は適切に記述される必要があります。

(2) 教えられた内容に加えて、メール認証の登録、認証コードのログイン、c3p0、MD5 暗号化、ログ ログ、結果のスタイルなど、その他のことを自分で学ぶこともできます。

(3) コードの記述も標準化する必要があり、ロジック (Cookie、セッション) の設定も厳密にする必要があり、空の判断が必要な場合は空の判断を行う必要があり、セキュリティを強化できる場合はそこから学ぶことができます。

(4) フロントエンドとバックエンドはうまく連携する必要があります。フロントエンドに何も言わずにバックエンドが勝手にやることを許してはいけません。フロントエンドとバックエンドのインタラクティブな応答も評価の一部であり、作成したインターフェイスは apifox 経由でのみ実行できますが、特定のフロントエンド ページに表示されるときにエラーが発生しますか。 ? 論理的な問題など、考慮が必要な点はありますか。

(一人の人間が国を支配することはできません!!!)

(5) 需要分析中に、実行したい機能とインターフェイスを指定します。フロントエンドで実行されていない機能がある場合は、それらの機能をバックエンドで実行する必要があります。 Interfaces/data を書いていない場合は、注意深く反省して、もっとコミュニケーションしてください。

実際に機能するプロジェクト、またはショッピング Web サイトなどの同様のものに対してベンチマークを行うことができます。次に、この Web サイトにあるバックエンド インターフェイス、機能モジュール、および具体的な詳細についてベンチマークを行う必要があります。

(6) やみくもに追求せず、論理的かつ合理的で、簡略化できる部分は簡略化することを学びましょう。ただし、基本的なインターフェイス数とコード量も保証する必要があります。 (私たちが最初に書いたインターフェースは基本的に 40 以上でした)