odooインターフェースの開発で

参考記事:HTTPS://blog.csdn.net/qq_33472765/article/details/81913627 


ケース0000001

インタフェース・コール要求説明:
HTTPSリクエストメソッド:GET(httpsプロトコルを使用して)
CSRF = Falseの
CSRF(クロスサイトリクエストフォージェリのクロス駅リクエストフォージェリ)質問、要求は影響しません取得、あなたはCSRF認証必要投稿
CSRF(クロスサイトリクエストフォージェリ)
CSRF英語クロスサイトリクエストフォージェリと呼ばれる
CSRFは、通常、悪質なリクエストを送信するユーザーの名前を奪う悪意のある攻撃者が、個人情報の危険の深刻な漏れを指し、プロパティのセキュリティ


(タイプ= 'JSON'は'/ FORUM / get_url_title'、、AUTH = "パブリック"、メソッド= [ 'POST']、ウェブサイト=真)http.route @
DEF get_url_title(セルフ、** kwargsから):
試してみます:
REQ = requests.get(kwargs.get( 'URL'))
req.raise_for_status()
アーチ= lxml.html.fromstring(req.content)
リターンarch.find( ".//タイトル")のテキスト。
例外IOErrorを除きます:
Falseを返します


応答データ・フォーマット:JSON
応答データ例:
{
"データ":ODOO_DATA

"結果":{

"other_field":[]

"状態":TRUE
}
}


によってお互い:
http://127.0.0.1:8069//forum/get_url_title JSONデータ転送オーバー:







II。ケース2:他のシステムにデータを送信[執行機能]
1.コールサービス・インターフェース、他のシステムへの操作を行います。
ケース0002:クエリデータのケースを:
ステップ1:統一化ログイン機能を行います:ユーザ名、B:パスワード、C:キー自動的に生成された鍵[]
ステップ2:着信クエリパラメータ:サービスコールインタフェース機能は、クエリを実行する:[データの形式は、サーバJSONから返さ定義]
良好なクエリ:ステップ3データ解析:= json.dumps(TEST_DATA)が格納されている本システムre_dataにおいて




"" "
SOAPおよびXML-RPCと#rest

具体的な説明:


「」「APIインターフェイスの開発の概要:
インターフェースが何される
インタフェースは、クライアント・インターフェースは、あなたの要求に対処し、独自のロジックのインタフェース、インタフェースのデータを返すためによく一致して対応を通じて、インタフェース定義されたパラメータの束を渡す以外の何ものでもありませんデータフォーマット
方法インタフェース開発

による自然自体にインタフェースによるバットパートナーデータに、以下の点は、開発中の注意を必要とする:
上院へのインタフェースを定義:インタフェース文書を書くことは
、一般的にパッケージ化必要に応じて:インターフェースは、データ型を返す定義フォーマット、戻りのXML、JSON、または他のパケットに判断


#1のA:HTTP形式のJSON形式での一般的なデータフォーマット:他のシステムからの送信データを受信し

、要求にこれらの種類を削除1. GET、POST、PUTをモード

要求モード動作であると言うことができる、データ送信、我々は通常、ウェブに形成HTTP、毛髪のこれらの種類の存在下でGET、POST二種類である。

GET(選択):特定のサーバから取得しますリソースまたはリソースリスト。
POST(作成):サーバ上に新しいリソースを作成します。
PUT(更新):全体 サーバー上のリソースに更新するための一つの方法
PATCH(更新):サーバー上のリソースの更新1つの属性のみを
DELETE(削除):サーバー上のリソースを削除します。
ハッシュは、データなどのリソースのメタデータを取得:HEAD値または最後に更新。
OPTIONSクライアントがリソース上で操作を何ができるかについての情報を取得:.


共通リクエストパラメータを
、このような大量のデータのように、データのページング要求の必要性は、私たちは、統一されたAPIリクエストのパラメータが共通している必要があります。これら。

レコードの制限指定した数は= 10返さ
= 10返す指定された記録開始位置をオフセット。
ページ= 2&PER_PAGE = 100指定し、最初の数ページあたりのレコード数れます。
SORTBY =名&オーダー= ASC指定された戻り結果がソート順とプロパティに従ってソート。
animal_type_id = 1つの指定されたフィルタ



3.jsonデータ型

インタフェースは、一般的にJSON形式のデータ伝送が注目されていることがJSONの値のみ6つのデータ型:

番号:整数または浮動小数点数の
文字:文字列
ブール:または偽の真の
配列:配列[]は角括弧で囲まれた
オブジェクト:中括弧に含まれるオブジェクト} {
NULL:空の型


4.リターンデータ構造



、典型的にはサーバによって返されたデータ構造:

{
コード:0、
メッセージ: " S "
データ:{KEY1:VALUE1、KEY2:値2、...}
}

コード:戻り成功したコード、0、ゼロ以外の様々なエラー
成功"、エラーの説明、成功:メッセージ"エラーで
データ:データは、成功を返し、またはタイプのオブジェクトの配列

別のエラー戻りコードのさまざまなニーズを定義すると、エラーやサーバー、クライアントは区別する必要が属している、例えば、1XXは、クライアントのエラーを表し、2XXは、サーバー側のエラーを表します。ここではいくつかの例があります:

0:成功
100:リクエストエラー
101:行方不明のAppKey
102:行方不明の署名
103:行方不明のパラメータ
200:サーバーエラー
201:サービスは利用できません
202:サーバーが再起動する




5. SSL(HTTPS)URLを提供するためには、
最初のものですそれは、クロールするとき、HTTPSパケットを使用して暗号化された多層であってもよいです。私たちはその後、ハッカーが簡単にでき、ルータがハッキングされたら、あなたは暗号化されていないHTTPを使用している場合、ハッカーは簡単に、ルータのデータ伝送を介してユーザにクロールすることができ、ルータWIFI環境で主に今あるAPPの使用環境ユーザー情報へのアクセス、さらにはアカウント情報。
第二に、でも使用HTTPSであれば、だけでなく、APIのデータ転送、正しい暗号化の設計インチ 例えば、直接実際のURLでトークン情報に、HTTPSを使用している場合でも、ハッカーはあなたの特定のデータ伝送を見つけることができませんが、あなたは、ああ、要求されたURLをキャッチすることができます!(GETメソッド要求を使用して、HTTPS、の情報を確認し、それが唯一のドメイン名の文字の一部をキャッチすることができ、要求されたデータをキャッチすることができない、
しかし、URLはブラウザや特殊なクライアントツールで直接見ることができます。次のエラー訂正の友人のおかげで)このように、POSTを使用し、又は必要なデータの先頭方向送信を置くために、HTTPS要求を使用する場合。



6.TOKEN

最も重要な設計原理のRESTfulな今、ほとんどが採用しているアプリケーションインタフェースRESTfulなアーキテクチャは、それがユーザーの状態になると、要求間でクライアントとサーバの相互作用は、各要求は、つまり、ステートレスであるということです認証情報に置くべきです。実現は、ほとんどが認証トークンを採用している、一般的なプロセスは次のとおりです。

成功したユーザのログインパスワードの後、サーバーはクライアントにトークンを返し、
クライアントが格納されているローカルで開始、その後、関連のリクエストトークンとなりますが、トークンがに送り返されますサーバー、
サーバーの有効性は、トークン、データの効果的なリターンをチェックし、有効であれば、2例は次のとおりです。
トークンエラーは、正しいトークンのために再度ログインするユーザーを必要と
し、クライアントが証明書要求を再起動する必要が満了トークン、新しいトークンを取得

ただし、この認証方法とセキュリティ上の問題があり、:ログインインターフェイスがハイジャックされたときに、ハッカーがユーザーのパスワードに入るとトークンは、何もするユーザーにフォローアップすることができます。ユーザーのみがコントロールを取り戻すためにパスワードを変更します。

どのようにそれを最適化するには?最初のソリューションは、HTTPSを使用することです。HTTPS HTTP SSLセキュリティプロトコルを追加することに基づいて、データを自動的に暗号化された圧縮され、いくつかのプログラムは、モニターを防ぐハイジャックを防ぐため、再送信を防止するため、セキュリティは多くのことを改善することができます。ただし、SSLがハイジャックすることができ、絶対に安全ではありません。また、サーバーは、HTTPS用に設定されている比較的少し複雑ですが、また一般的にはまたは有料で、CA証明書を申請する必要があります。また、HTTPS効率が比較的低いです。一般的に、システムの唯一の高いセキュリティ要件は、銀行などのHTTPSを採用します。安全要件のほとんどとAppまたはHTTPを使用するにはそれほど高くありません。

私たちの現在の慣行は、各インターフェイスに署名を追加することです。クライアントがキーに割り当てられ、各時間は、要求インタフェース、すべてのパラメータ署名アルゴリズムに応じて署名値を生成するために、ソース文字列のキーの組み合わせは、署名は、認証サーバの送信要求とともに送信されます。同様の参照署名アルゴリズムは、OAuth1.0を達成することができます。このように、ハッカーは鍵を知らない、後続の要求へのログインインターフェイスへの迎撃に成功し、操作することができない場合でも、署名アルゴリズムを知りません。しかし、署名アルゴリズムは、内部インターフェイスのため、誤りを比較的面倒とやすいです。あなたはオープンインタフェースのAPIに属している場合は、署名検証のこのようにあまり適して、それが認証機構のOAuth2.0を使用することが示唆されました。

我々は、アンドロイド、iOSの、三端子のマイクロチャネルと、のAppKeyの各端部に割り当て、各端部は、それぞれのキーとのAppKeyを割り当てます。APPKEYエラーを渡さないであろう要求が、間違ったAPPKEY要求が与えられます渡されました。このように、安全性とは異なる端部に異なる治療戦略何かをするために便利なもの防御層が追加されますが、。

また、より多くのアプリケーションがパスワードをキャンセルして、電話番号+ログイン認証コードSMSを使用して、私はまた、現在のプロジェクトでは、このログインを使用していました。このログインには、いくつかの利点を持っていない:

無登録、パスワードを変更する必要はありませんが、操作のパスワードをリセットするパスワードを忘れする必要はありません。
ユーザーは、もはやパスワードが漏れの問題を恐れていないで、あなたのパスワードを覚えておく必要があります。
相対そのへのパスワードのセキュリティが大幅に増加しました。


7.ユーザーデザイン

の明示的および暗黙的なユーザーユーザーは、私はこれらの二つの言葉かどうかを正確に知りません。
明示的に、明示的なユーザーと呼ばれるユーザー、APPプログラムユーザシステム、ユーザ名、パスワードが正しい正当なユーザーを指し、
通常、明示的なユーザーは、登録し、いくつかの個人的な関連操作を完了するために、後でログインする必要があります。

暗黙的にAPPプログラム自体は、ユーザシステムなしに、利用者を指し、またはログインの不存在下で、我々のアプリのユーザーを使用します。
この場合、ユーザーは、生成されたクライアントUDIDによって識別することができます。

ユーザー情報では、我々はむしろ、すべてのユーザーのための全体的な統計よりも、別のユーザーの習慣を理解することができるようになります、
その情報を持つこれらの個人は、ユーザーがいくつかのクラスタリング、パーソナライズされた勧告のようなものを行うことができます。

SAASバージョンは、また別のビジネスユーザーを区別する必要がある場合




8.良好な界面のドキュメントやテストプログラム

、インタフェース仕様の開発によると、開発者の前端と後端、時には早く落ち着くために、プロジェクト内のインターフェイスのドキュメント
書き込みが完了した後、いくつかのインターフェイスの開発を。
インターフェイス文書が明確かつ正確に、インタフェースごとに、アドレスを含むインターフェイスの数は、要求方法、データ交換フォーマットので、戻り値は、明らかに書き込みます。

インターフェイスのテスト手順は、そうすることができ、あなたは、フロントを提供することができ、背面には、デバッグを容易にするために、終了します。



springMVC開発は、あなたが闊歩を使用することができた場合は、バックエンドは、単にいくつかのコメントを追加する簡単かつ効率的にその上にフロントエンドにURLを送信します。




9.インターフェイスの統計情報

サイトを行うには、PC側では、我々は我々のサイト統計関数に追加したり、独自の統計システムを作成し、またはそのようなので、上のGA、百度として第三者に使用されます。
モバイルエンド・インターフェース(API)は、当社独自の統計関数を達成するために必要があるでしょう
、あなたが私たちのクライアントについてできるだけ多くの情報を収集する必要があり、従来のIP、ユーザエージェントに加えて、我々はまた、一部のモバイル関連の情報を収集しなければならない
などの
携帯電話のオペレーティングシステムAndroidまたはiOSで、バージョンは何ですか、
ユーザーのネットワークの状態は、2G、3G、4GまたはWIFIのある
クライアントAPPどのようなバージョン情報。

これは、より良い私たちのユーザーのを理解するために私たちを助け


おすすめ

転載: www.cnblogs.com/1314520xh/p/11261532.html