私の会社は、大きなプロジェクトをゼロから再設計しようとしています。現在、データプロバイダーの実装方法を検討中です。私は過去数か月でいくつかの Web サービスを統合していましたが、この方法でデータを処理するのが好きです。そこで、RESTful な設計を考えていました。REST をサポートする ColdFusion 10 を使用しますが、実際には必要なコンポーネント構造が好きではありません。
おそらく最大の利点は、REST を使用してすべてのプラットフォーム (Web サイト、モバイル Web サイト、iOS/Android アプリ) にデータを提供できることです。私のセキュリティ アプローチは次のとおりです。公開データには誰でもアクセスできます (当然のことです)。個人データには BasicAuth のみでアクセスできます。BasicAuth を使用すると、さまざまなアクセス レベルを持つユーザー ロールを持つこともできます。認証は暗黙的で、セッション/ログインに基づいています。
<!--- server-side example to request customer information (private data, BasicAuth required) --->
<cfset requestedID = 123>
<cfhttp url="/customer/#requestedID#" method="get" username="#APPLICATION.REST_SYSTEMUSER#" password="#APPLICATION.REST_SYSTEMUSER_PW#">
<cfhttpparam type="url" name="includeAddresses" value="true">
</cfhttp>
<!--- successful response in JSON --->
{
"ID": 123,
"FirstName": "John",
"LastName": "Doe",
"Birthday": "1970-01-01",
"BillingAddress": {
"Receiver": "John Doe",
"Street": {
"Name": "Main Street",
"Number": "13",
"Addition": ""
}
"City": {
"ZipCode": "AB-123",
"Name": "Sampletown",
"District": ""
}
},
"ShippingAddresses": [
]
}
<!--- deserialize JSON and build an object to use server-side (the constructor wraps the data and adds functions to it) --->
<cfset customerJSON = deserializeJSON(CFHTTP.FileContent)>
<cfset customer = createObject("component", "Customer").init(customerJSON)>
ここに私の頭に浮かんだ質問があります:
- すべての単一ページのすべてに対して、この一般的な REST アプローチを使用するのは賢明でしょうか? (そもそも Web サイトで REST を使用するのは賢明でしょうか?)
- ローカル HTTP リクエストはパフォーマンスに影響を与え、ページの読み込みを遅くしますか?
- BasicAuth はデータを保護するのに十分ですか? (リクエストスパム保護などのマイナーなセキュリティ機能を追加するだけです)
- データを受信するために
/customer/
アクセスするなど、Web サービス内に依存関係を持たないようにするのが最善 ですか?/address/
他の (古い) Web サイトの一部には、ファイル ベースのデータ プロバイダー (データベース アクセスを処理するインクルードとコンポーネントなど) がありますが、より複雑なページ (チェックアウト プロセスなど) では、名前の競合など、いくつかの問題が発生しました。透明で重いコンポーネント、モデル/ビュー/コントローラー要素の混同などが含まれます。