Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

はじめに

前回の記事では、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を使ってみる

tami
SAPUI5、 Fioriについて学びつつ、アウトプットしていきたいと思います。記事の内容について質問・コメント歓迎です
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away