9
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【SAPUI5】OData(2) ODataを構成するもの

Last updated at Posted at 2019-01-01

はじめに

前回の記事では、ODataの概要について説明しました。
今回は、ODataを構成する要素(Entity type, Entity setなど)について書きます。

※OData関連の投稿一覧は以下の記事をご参照ください。
【SAPUI5】OData(1) ODataとは

ODataの構造

ODataは、データ構造をmetadataとして記述します。
metadataには以下のようなものが含まれます。

要素 説明
Entity Type データの構造を定義したもの。Entityを一意に特定するkeyを持つ。Entity Typeを構成する要素のことをpropertyという
Entity Entity Typeのインスタンス
Entity Set Entityの集合
Navigation property Entity同士の関係。カーディナリティを持つ
Action 元のデータに変更を加えうる操作
Function 元のデータに変更を加えない操作。たとえばフィルタなど

ABAPに親しんだ人にとっては、Entity Type=構造の型、Entity Set=内部テーブル、Entity= 内部テーブルの1行と考えるとわかりやすいと思います。

Entity Type, Entity, Entity Setのイメージ
image.png

実際のmetadataを見てみる

metadataを見る際はブラウザに <サービスURL>/$metadata と入力します。
試しにTripPin Serviceというサンプルサービスのmetadataを見てみましょう。
https://services.odata.org/TripPinRESTierService/(S(jiypl3wubcokjjg4zf40jtvx))/$metadata

image.png

なんだかびっしり書かれていてわかりづらいですね。
それもそのはず、機械が読めるように記述してあるのですから。
あと、TripPin Serviceで利用可能なインターフェースがすべて書いてあるので、大量になっています。

ここでは、Personに関係する部分について、少し詳しく見てみましょう。
※個々の要素の使い方については私もまだわかっていないので、metadataの構成要素がここにあるなあ、というのを確認する程度です。

image.png

PersonというEntity TypeはUserNameがキーになっています。このほかにFirstName, LastNameなどの属性を持っています。
一番下にNavigation Propertyとして、FriendsとBestFriendへのリンクを持っています。Friendsは友達のリスト、BestFriendは一人だけの親友につながっています。(Tripsについては割愛)

PersonとFriends, BestFriendの関係
image.png

スクロールダウンすると、GetPersonWithMostFriendsというファンクションがあります。このファンクションはPerson型の1件のデータを返すようです。
image.png
一番下までスクロールすると、EntityContainerというタグがあります。
この中にEntity Setが定義されています。
image.png
Person型のEntity Setとして、Peopleが定義されています。(複数形になっていることに注意)
PeopleはNavigationPropertyBindingとして、Friends, BestFriendなどを持っています。
その下にFunctionImportとして、上で定義されいてたファンクション"GetPersonWithMostFriends"が載っています。
どうやらファンクションを使えるようにするには、FunctionImportにも記載する必要があるようです。

ブラウザからEntity Setを取得してみる

実際のデータはどのようになっているのでしょうか。
ブラウザから<サービスURL>/<Entity Set>と入力すると、Entity Setの中身を見ることができます。
以下のように入力してみます。
https://services.odata.org/TripPinRESTierService/(S(jiypl3wubcokjjg4zf40jtvx))/People
文字が詰まっていて見づらいですが、Peopleの中身を見ることができます。
image.png

2019/1/2追記
Chromeの場合、拡張機能のJSON Formatterを入れると見やすい形で表示されます。
参考:http://www.atmarkit.co.jp/ait/articles/1611/09/news036.html
image.png

まとめ

  • ODataを構成する要素には、Entity Type, Entity, Entity Set, Navigation propertyなどがある
  • どのようなEntityが使えるかは、metadataに記載されている
  • metadataは<サービスURL>$metadataで見ることができる

##参考
OData Version 4.0. Part 1: Protocol Plus Errata 03

関連記事

OData(1) ODataとは
OData(3) ODataのQuery optionを使ってみる

9
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?