私はjsonapiを使用してすべてのAPIレスポンスのデータを記述する可能性を検討中のアプリケーションに取り組んでいます。リソースのようなエンティティではうまく機能しますが、レポートデータをjsonapiのような方法で記述する方法がいくつかあります。JSON APIで無駄な集計データを表現する
レポートデータでは、データベースに格納された基本的なリソースのようなデータから、集計して計算したデータを参照します。たとえば、不動産に関する情報を保存するとします。また、住宅、アパート、オフィススペースに関する情報があります。それぞれの場所、面積、サイズ(平方フィート)、不動産の種類(住居、アパート、オフィススペース)およびプロパティに関するその他の関連情報。ここで、?group_by[]=location&group_by[]=type
を受け取るレポートが必要であるとし、その2つのパラメータの交差に関する集約された情報をレスポンスで伝えたいとします。たとえば、指定された場所のすべてのプロパティの平均平方フィートの領域を含むオブジェクトをプロパティのタイプ別にグループ化したものが表示されます。
Average Property Sizes (in square feet)
Houses Apartments Offices
Manhattan 1234.56 234.56 123.45
Cape Coral 456.78 654.32 876.54
Portland 4321.00 987.65 2345.67
私たちは、このデータから考えることができる最も資源のようなものは、各セルであるが、彼らはより基本的なデータの計算された集計の結果であることから、彼らは自然のIDを持っていません。計算されたIDでデータを配信することも考えています(データがグループ化されたディメンションのIDを組み合わせた場合)"house,34"
house
はプロパティのタイプを表し、34
はロケーション「マンハッタン」のIDです。 )。次に、各セルは、ペイロードのincluded
セクションに含まれる対応するロケーションレコードとの関係を持ちます。ここでは、このように見えるだろうかのサンプルJSONファイルです:
{
"data": [
{
"id": "house,123",
"type": "report_items",
"attributes": {
"property_type": "house",
"value": 108.75
},
"relationships": {
"location": {
"data": {
"type": "locations",
"id": 123
}
}
}
},
{
"id": "house,124",
"type": "report_items",
"attributes": {
"property_type": "house",
"value": 36.0
},
"relationships": {
"location": {
"data": {
"type": "locations",
"id": 124
}
}
}
},
{
"id": "house,125",
"type": "report_items",
"attributes": {
"property_type": "house",
"value": 1.0
},
"relationships": {
"location": {
"data": {
"type": "locations",
"id": 125
}
}
}
},
{
"id": "office,123",
"type": "report_items",
"attributes": {
"property_type": "office",
"value": 4.0
},
"relationships": {
"location": {
"data": {
"type": "locations",
"id": 123
}
}
}
},
{
"id": "office,124",
"type": "report_items",
"attributes": {
"property_type": "office",
"value": 2.0
},
"relationships": {
"location": {
"data": {
"type": "locations",
"id": 124
}
}
}
},
{
"id": "apartment,123",
"type": "report_items",
"attributes": {
"property_type": "apartment",
"value": 2.0
},
"relationships": {
"location": {
"data": {
"type": "locations",
"id": 123
}
}
}
},
{
"id": "apartment,125",
"type": "report_items",
"attributes": {
"property_type": "apartment",
"value": 4.5
},
"relationships": {
"location": {
"data": {
"type": "locations",
"id": 125
}
}
}
},
{
"id": "apartment,124",
"type": "report_items",
"attributes": {
"property_type": "apartment",
"value": 2.0
},
"relationships": {
"location": {
"data": {
"type": "locations",
"id": 124
}
}
}
}
],
"included": [
{
"type": "locations",
"id": "123",
"attributes": {
"name": "Manhattan"
}
},
{
"type": "locations",
"id": "124",
"attributes": {
"name": "Cape Coral"
}
},
{
"type": "locations",
"id": "125",
"attributes": {
"name": "Portland"
}
}
]
}
私の質問です:これはjsonapiでこの種のデータを表現する適切な方法は何ですか? jsonapiはリソースに直接マップされないデータに適していますか?カスタムjsonでこのデータを表現する方が良いでしょうか?私はこれらの質問にはおそらく明確な答えがないことを知っていますが、おそらく、このようなデータをjsonapiなどに適合させるための類似のシナリオ、賛否両論に近づく方法についての経験は既にあります。とても有難い。ありがとう。
PS:フォーラムやインターネットで掘り下げた後でも、これを投稿しました。これらのリンクは、私が見つけようとしているものに似ていることがわかりました。ここでは、同様の参照のために: 1.- http://discuss.jsonapi.org/t/composite-id-inside-the-resource-object/367/13 2.- http://discuss.jsonapi.org/t/extension-for-chart-graph-data/408
この特定のケースに対する具体的な解決策は求めていませんが、JSON APIをこのような無駄なデータに使用する可能性に関する情報はありません。それはお勧めですか?私のデータをJSON APIに適応させるために余分な努力を払う必要がありますか? JSON APIは、リソースのようなデータに特化して使用されるように設計されていますか? – Ernesto