Android開発ベストプラクティス——1.インタフェースせっけい

2661 ワード

Android開発ベストプラクティス——1.インタフェースせっけい
プロジェクトが始まったばかりの頃、最も確認しなければならないのはインタフェースの設計です.データがどのように伝達され、どのフォーマットを使用してどのプロトコルを使用し、どのように安全性を保証するかです.1つのプロジェクトのインタフェースの設計が不合理である場合、例えばセキュリティを考慮していない場合、後期にセキュリティ検証を増加させるために一部のAPIを倒してやり直さなければならない場合、フロントエンド(Android、iOS、Webを指す)はプロジェクト全体を変更しなければならず、以前に発表されたバージョンが使用できない場合もある.
では、私が考えている良いインタフェースがどのように設計されているかについてお話しします.
デザイン
RESTfulスタイルのAPIデザインを使用.
プロトコル
HTTPSプロトコルを使用して、HTTPの便利さを保証すると同時に一定の安全性を保証する.
ドメイン名
https://api.github.com/
パスとリソース
RestfulスタイルのAPIでは、各パスはインターネット内のリソースを表しています.したがって,URLアドレスには名詞を用いるべきであり,多くは資源集合であるため,複数の形式を用いるべきである.依存関係のあるリソースの場合は、依存関係に従う必要があります.次に、いくつかの例を示します.
  • https://api.example.com/v1/posts
  • https://api.example.com/v1/posts/{postId}
  • https://api.example.com/v1/posts/{postId}/comments

  • HTTP動詞
    HTTP動詞はデータベースの添削修正操作に完璧に対応できるので、HTTP動詞と私たちの添削修正操作を対応させます.
  • GET:クエリーデータ
  • POST:増加データ
  • PUT:更新データ(クライアントが変更後の完全なリソースを提供する)
  • PATCH:更新データ(クライアントがいくつかの属性を更新)
  • DELETE:削除データ
  • Queryクエリー
    GETクエリーでは、すべてのリソースを一度に取得することはできません.では、クエリー条件をいくつか提供する必要があります.
    一般的なクエリーは次のとおりです.
    ?index=2&size=20:2ページ目1ページ20本
    ?sortby=name&order=asc:指定されたルールと順序でソート
    グローバル情報
    グローバル共通情報はリクエストヘッダに配置され、Queryパッチの使用を避ける必要があります.たとえば、次のようにします.
  • APPID(Android/iOS/H5)
  • APPVER(バージョン番号)
  • CHANNEL(チャネル番号)
  • APP-BUILD-NUM(内部マイナーバージョン番号)
  • TOKEN
  • NETWORK(ネットワーク環境)
  • LANGUAGE(言語)
  • データの転送
    Request
    json形式でデータを転送し、ファイルをアップロードする必要がある場合はフォーム形式でコミットします.
    Response
    データはjson形式で転送され、Content-Typeはアプリケーション/jsonに一貫して設定されます.
    名前
    を選択します.
    意味
    code
    int
    ステータスコード
    message
    String
    ステータス情報
    data
    List or Object
    データ#データ#
    time
    long
    タイムスタンプ
    具体的な応答は次のとおりです.
    {
      'code': 0,
      'message': '    ',
      'data': [{}, {}, {}], //       
      'time': 1472435695000
    }
    

    または、次のいずれかのデータを返します.
    {
      'code': 0,
      'message': '    ',
      'data': {}, //       
      'time': 1472435695000
    }
    

    安全
    クライアントとサービス側の通信の安全を保証するために、HTTPSプロトコルを使用します.
    アイデンティティ認証にOauth 2.0プロトコルを使用し、ユーザーがログインした後、クライアントにtokenを保存し、クライアントにユーザー名とパスワードを永続的に保存しないようにします.その後、アイデンティティ認証が必要なAPIにアクセスするたびにtokenアクセスを携帯する必要があります.
    空のポインタを避ける
    APIが設計されている場合は、フロントエンドが空のポインタ異常を回避するのを合理的に支援する必要があります.一部のフィールドまたは属性が空の場合は、Stringが「」を返し、intが0を返し、Objectが{}を返し、Array or Listが[]を返します.
    リファレンス
  • ゼロから始まるAndroid新プロジェクト9-フロントエンド用バックグラウンドインタフェース設計
  • RESTful API設計ガイドライン
  • Android開発ベストプラクティス——1.インタフェース設計