最近、私たちのチームは、既存のウェブサイト用のモバイル (iPhone、Android プラットフォーム) アプリケーションを開発する予定です。これにより、ユーザーはアプリケーションを使用して、アプリケーションを介してコンテンツをより簡単に読むことができます。
しかし、私たちのチームは、API リターンの JSON スキーマで異なるビューを持っています。以下はサンプル レスポンスです。
スキーマ タイプ 1:
{
"success": 1,
"response": {
"threads": [
{
"thread_id": 9999,
"title": "Topic haha",
"content": "blah blah blah",
"category": {
"category_id": 100,
"category_name": "Chat Room",
"category_permalink": "http://sample.com/category/100"
},
"user": {
"user_id": 1,
"name": "Hello World",
"email": "helloworld@hello.com",
"user_permalink": "http://sample.com/user/Hello_World"
},
"post_ts": "2012-12-01 18:16:00T0800"
},
{
"thread_id": 9998,
"title": "asdasdsad ",
"content": "dsfdsfdsfds dsfdsf ds",
"category": {
"category_id": 101,
"category_name": "Chat Room 2",
"category_permalink": "http://sample.com/category/101"
},
"user": {
"user_id": 2,
"name": "Hello baby",
"email": "hellobaby@hello.com",
"user_permalink": "http://sample.com/user/2"
},
"post_ts": "2012-12-01 18:15:00T0800"
}
]
}
}
スキーマ タイプ 2:
{
"success": 1,
"response": {
"threads": [
{
"thread_id": 9999,
"title": "Topic haha",
"content": "blah blah blah",
"category": 100,
"user": 1,
"post_ts": "2012-12-01 18:16:00T0800"
},
{
"thread_id": 9998,
"title": "asdasdsad ",
"content": "dsfdsfdsfds dsfdsf ds",
"category": 101,
"user": 2,
"post_ts": "2012-12-01 18:15:00T0800"
}
],
"category": [
{
"category_id": 100,
"category_name": "Chat Room",
"category_permalink": "http://sample.com/category/100"
},
{
"category_id": 101,
"category_name": "Chat Room 2",
"category_permalink": "http://sample.com/category/101"
}
],
"user": [
{
"user_id": 1,
"name": "Hello World",
"email": "helloworld@hello.com",
"user_permalink": "http://sample.com/user/Hello_World"
},
{
"user_id": 2,
"name": "Hello baby",
"email": "hellobaby@hello.com",
"user_permalink": "http://sample.com/user/Hello_baby"
}
]
}
}
一部の開発者は、スキーマ タイプ 2 を使用すると、
- カテゴリとユーザー エンティティが重複しすぎると、データ サイズを減らすことができます。応答プレーンテキストのサイズを少なくとも 20 ~ 40% 削減します。
- 一度データサイズが小さくなると、JSONオブジェクトに解析する際にメモリが少なくなります
- categoey と user はハッシュマップに保存でき、再利用が容易
- データ取得時のオーバーヘッドを削減
スキーマ タイプ 2 が本当に強化されているかどうかはわかりません。私は非常に多くの API ドキュメントを読んでいるので、このタイプのスキーマ設計は見たことがありません。私にとっては、リレーショナル データベースのように見えます。Web サービス API の設計経験がないので、いくつか質問があります。
- API の設計原則 (読みやすく、使いやすい) に反していませんか?
- IOS / Android プラットフォームで解析すると、本当に高速になり、メモリ リソースが少なくなりますか?
- クライアントとサーバー間のオーバーヘッドを削減できますか?
ありがとうございます。