はじめに

SAPUI5でアプリケーションを作るにあたり、ODataは避けては通れないトピックです。
結構広いテーマなので、5~7回くらいに分けて書きたいと思います。
1回目はODataの概要について説明します。

ODataとは

OData(Open Data Protocol)とは簡単に言えば、HTTPを使ってサーバとブラウザでデータをやり取りするためのプロトコルです。
Microsoftが作った仕組みで、それをSAPでも利用しています。

イメージ

ODataのベースとなる考え方

ODataは"REST"の考え方がベースとなっています。
REST(REpresentational State Transfer)とは、Webサービスにおけるアーキテクチャのスタイルの一つです。
対象のリソースをURIで指定し、HTTPメソッド(GET, POSTなど)によって操作します。

OData – Everything that you need to know (Part 2)より引用

Representationとは

RepresentationとはURIによって指定されたリソースまたはその一部です。
たとえばPersonというリソースがあり、その人の連絡先情報を取得するODataサービスがあるとします。この場合、氏名、住所、電話番号などがRepresentationとなります。

RESTful APIとは

RESTful APIとは、RESTの6つの原則に従って作られたAPIのことです。

6つの原則

原則 説明
Client-Server クライアト・サーバー型であること(データの格納場所とユーザインターフェースを分離するため)
Stateless クライアントからサーバへのリクエストは、サーバがリクエストを理解するのに必要な情報をすべて含むこと。サーバ側にクライアントの情報は保存しない
Cacheable サーバからのレスポンスには、明示的あるいは暗黙的にキャッシュの可否が示されること
Uniform Interface コンポーネント間で統一されたインターフェースを使用すること。このために、リソースの特定方法(URI)、操作方法(HTTPメソッド)などの決まりがある。
Layered System レイヤー構成を可能にすること。クライアントはサーバではなく中間レイヤーと通信する場合もあるが、何とやり取りをしているかを意識する必要はない
Code on Demand サーバから送信されたコードをクライアントで実行することで、クライアント側の機能を一時的に拡張できるこ

ODataの特徴

ODataには次のような特徴があります。

  1. URIを使ってデータを読み書きする
  2. 言語に依存せずに利用できる
  3. JSONまたはXML形式でレスポンスを返す

1. URIを使ってデータを読み書きする

URI(Uniform Resource Identifier)とは、その名の通りインターネット上のリソースを一意に特定するための名前、または場所、またはその両方のことを指します。(ちなみに、URLもURIの一部です)
ODataにアクセスする際は、以下のようにURIを指定します。

OData Version 4.0 Part 2: URL ConventionsInformation published on non-SAP siteより引用

ひとまず、「URLのような形式でデータの取得や更新ができる」という理解で十分だと思います。

2. 言語に依存せずに利用できる

ODataはHTTPをベースとした仕組みなのでクライアント側、サーバ側とも言語の制約がありません。(HTTPリクエスト、レスポンスを作れればよい)
参考までにODataの公式リファレンスには、HTTP, C#, JavaScript, C++, Node.jsのサンプルがあります。

3. JSONまたはXML形式でレスポンスを返す

ODataのレスポンスの形式はJSON、またはXML形式です。
どのようなデータ形式で欲しいかはリクエストで指定します。

まとめ

  • ODataはRESTの考え方をもとに作られている
  • URIを指定してリソースを操作する
  • どのような言語でも使え、レスポンスはJSONまたはXML

参考

OData – Everything that you need to know (Part 1)
OData – Everything that you need to know (Part 2)
OData – Everything that you need to know (Part 3)
OData and SAP Netweaver Gateway. Part I. Introduction
RESTとは何か
Architectural Styles and the Design of Network-based Software Architectures

【SAPUI5】ODataとは的更多相关文章

  1. 【SAPUI5】ODataを構成するもの

    はじめに SAPUI5でアプリケーションを作るにあたり.ODataは避けては通れないトピックです.結構広いテーマなので.5-7回くらいに分けて書きたいと思います.1回目はODataの概要について説明し ...

  2. 【转】jqGrid 各种参数 详解

      [原文]http://www.cnblogs.com/younggun/archive/2012/08/27/2657922.htmljqGrid 各种参数 详解 JQGrid JQGrid是一个 ...

  3. 【WebApi】————.net WebApi开发(一)

    2013年08月08日 ⁄ 综合 ⁄ 共 554字 ⁄ 字号 小 中 大 ⁄ 评论关闭 [1].部署环境.net4及以上版本. [2].vs2010  开发需单独安装vs2010 sp1和mvc4 m ...

  4. 【转载】Github上优秀的.NET Core项目

    Github上优秀的.NET Core项目 Github上优秀的.NET Core开源项目的集合.内容包括:库.工具.框架.模板引擎.身份认证.数据库.ORM框架.图片处理.文本处理.机器学习.日志. ...

  5. Python高手之路【六】python基础之字符串格式化

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...

  6. 【原】谈谈对Objective-C中代理模式的误解

    [原]谈谈对Objective-C中代理模式的误解 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这篇文章主要是对代理模式和委托模式进行了对比,个人认为Objective ...

  7. 【原】FMDB源码阅读(三)

    [原]FMDB源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 FMDB比较优秀的地方就在于对多线程的处理.所以这一篇主要是研究FMDB的多线程处理的实现.而 ...

  8. 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新

    [原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...

  9. 【调侃】IOC前世今生

    前些天,参与了公司内部小组的一次技术交流,主要是针对<IOC与AOP>,本着学而时习之的态度及积极分享的精神,我就结合一个小故事来初浅地剖析一下我眼中的“IOC前世今生”,以方便初学者能更 ...

随机推荐

  1. apache ftp server的简单入门(java应用内嵌ftp server)

    Apache Ftp Server:(强调) Apache Ftp Server 是100%纯Java的FTP服务器软件,它采用MINA网络框架开发具有非常好的性能.Apache FtpServer ...

  2. JVM参数简述

    java虚拟机启动时会带有很多的启动参数,Java命令本身就是一个多参数的启动命令.那么具体JVM启动包含哪些参数呢?这篇文章针对java8的情况做一篇汇总解读,包含大多数常见和不常见的命令参数,过于 ...

  3. SQLServer SELECT @@IDENTITY 遇到的坑

    经常在写存储过程的时候获取当前插入后的ID都会用  @@IDENTITY 但是今天在用 @@IDENTITY的时候涉及到当前数据的插入会有insert触发器发生时,发现与实际插入的ID值对不上,网上查 ...

  4. 解决点击cell执行动画导致的重用问题

    解决点击cell执行动画导致的重用问题 说明: 动画的细节都是裸露的,并没有封装,靠看官来优化了. 效果: 源码: https://github.com/YouXianMing/UITableView ...

  5. C 转义字符说明

    %a(%A) 浮点数.十六进制数字和p-(P-)记数法(C99)%c 字符%d 有符号十进制整数%f 浮点数(包括float和doulbe)%e(%E) 浮点数指数输出[e-(E-)记数法]%g(%G ...

  6. MongoDB的Spring-data-mongodb集成(Win10 x64) 第一章 - MongoDB安装与简单命令

    这是MongoDB系列的第一章,作者将持续更新. 1.下载 https://www.mongodb.com/download-center#community 2.安装与配置 有关安装的任何困难请点击 ...

  7. sql标量函数与表值函数

    标量函数 ),)) returns int as begin return (select UserID from UserInfo where UserName=@UserName and User ...

  8. npm install --save 和 --save-dev的区别

    --save 会把依赖包名称添加到 package.json 文件 "dependencies" 键下--save-dev 则添加到 package.json 文件 "d ...

  9. RabbitMQ学习以及与Spring的集成(一)

    本文记录RabbitMQ服务的搭建过程. 想要使用RabbitMQ消息中间件服务.首先要安装RabbitMQ,可以在:https://www.rabbitmq.com/download.html根据安 ...

  10. xdebug安装及使用小结

    最近安装了一下xedug,并且学习了一下如何使用.安装xdebug的初衷是为了深入研究一下PHP的垃圾回收机制. Xdebug是一个开放源代码的PHP程序调试器(即一个Debug工具),可以用来跟踪, ...