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
タイムスタンプ
具体的な応答は次のとおりです.
または、次のいずれかのデータを返します.
安全
クライアントとサービス側の通信の安全を保証するために、HTTPSプロトコルを使用します.
アイデンティティ認証にOauth 2.0プロトコルを使用し、ユーザーがログインした後、クライアントにtokenを保存し、クライアントにユーザー名とパスワードを永続的に保存しないようにします.その後、アイデンティティ認証が必要なAPIにアクセスするたびにtokenアクセスを携帯する必要があります.
空のポインタを避ける
APIが設計されている場合は、フロントエンドが空のポインタ異常を回避するのを合理的に支援する必要があります.一部のフィールドまたは属性が空の場合は、Stringが「」を返し、intが0を返し、Objectが{}を返し、Array or Listが[]を返します.
リファレンスゼロから始まるAndroid新プロジェクト9-フロントエンド用バックグラウンドインタフェース設計 RESTful API設計ガイドライン Android開発ベストプラクティス——1.インタフェース設計
プロジェクトが始まったばかりの頃、最も確認しなければならないのはインタフェースの設計です.データがどのように伝達され、どのフォーマットを使用してどのプロトコルを使用し、どのように安全性を保証するかです.1つのプロジェクトのインタフェースの設計が不合理である場合、例えばセキュリティを考慮していない場合、後期にセキュリティ検証を増加させるために一部のAPIを倒してやり直さなければならない場合、フロントエンド(Android、iOS、Webを指す)はプロジェクト全体を変更しなければならず、以前に発表されたバージョンが使用できない場合もある.
では、私が考えている良いインタフェースがどのように設計されているかについてお話しします.
デザイン
RESTfulスタイルのAPIデザインを使用.
プロトコル
HTTPSプロトコルを使用して、HTTPの便利さを保証すると同時に一定の安全性を保証する.
ドメイン名
https://api.github.com/
パスとリソース
RestfulスタイルのAPIでは、各パスはインターネット内のリソースを表しています.したがって,URLアドレスには名詞を用いるべきであり,多くは資源集合であるため,複数の形式を用いるべきである.依存関係のあるリソースの場合は、依存関係に従う必要があります.次に、いくつかの例を示します.
HTTP動詞
HTTP動詞はデータベースの添削修正操作に完璧に対応できるので、HTTP動詞と私たちの添削修正操作を対応させます.
GETクエリーでは、すべてのリソースを一度に取得することはできません.では、クエリー条件をいくつか提供する必要があります.
一般的なクエリーは次のとおりです.
?index=2&size=20:2ページ目1ページ20本
?sortby=name&order=asc:指定されたルールと順序でソート
グローバル情報
グローバル共通情報はリクエストヘッダに配置され、Queryパッチの使用を避ける必要があります.たとえば、次のようにします.
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が[]を返します.
リファレンス