【SAPUI5】ODataとは
はじめに
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には次のような特徴があります。
- URIを使ってデータを読み書きする
- 言語に依存せずに利用できる
- 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とは的更多相关文章
- 【SAPUI5】ODataを構成するもの
はじめに SAPUI5でアプリケーションを作るにあたり.ODataは避けては通れないトピックです.結構広いテーマなので.5-7回くらいに分けて書きたいと思います.1回目はODataの概要について説明し ...
- 【转】jqGrid 各种参数 详解
[原文]http://www.cnblogs.com/younggun/archive/2012/08/27/2657922.htmljqGrid 各种参数 详解 JQGrid JQGrid是一个 ...
- 【WebApi】————.net WebApi开发(一)
2013年08月08日 ⁄ 综合 ⁄ 共 554字 ⁄ 字号 小 中 大 ⁄ 评论关闭 [1].部署环境.net4及以上版本. [2].vs2010 开发需单独安装vs2010 sp1和mvc4 m ...
- 【转载】Github上优秀的.NET Core项目
Github上优秀的.NET Core项目 Github上优秀的.NET Core开源项目的集合.内容包括:库.工具.框架.模板引擎.身份认证.数据库.ORM框架.图片处理.文本处理.机器学习.日志. ...
- Python高手之路【六】python基础之字符串格式化
Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...
- 【原】谈谈对Objective-C中代理模式的误解
[原]谈谈对Objective-C中代理模式的误解 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这篇文章主要是对代理模式和委托模式进行了对比,个人认为Objective ...
- 【原】FMDB源码阅读(三)
[原]FMDB源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 FMDB比较优秀的地方就在于对多线程的处理.所以这一篇主要是研究FMDB的多线程处理的实现.而 ...
- 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新
[原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...
- 【调侃】IOC前世今生
前些天,参与了公司内部小组的一次技术交流,主要是针对<IOC与AOP>,本着学而时习之的态度及积极分享的精神,我就结合一个小故事来初浅地剖析一下我眼中的“IOC前世今生”,以方便初学者能更 ...
随机推荐
- Debian出现in the drive ‘/media/cdrom/’ and press enter解决办法
没有光盘源解决打开/etc/apt/sources.list文件,注释掉cdrom那一行,然后再执行apt-get update更新下deb仓库这样以后再使用apt-get安装时就不会再搜寻cdrom ...
- 设置 ExpressRoute 和站点到站点并存连接
配置站点到站点 VPN 和 ExpressRoute 共存连接具有多项优势. 可以将站点到站点 VPN 配置为 ExressRoute 的安全故障转移路径,或者使用站点到站点 VPN 连接到不是通过 ...
- 用UIControl封装Button
用UIControl封装Button 效果 说明 UIControl在处理超出触摸范围的触摸事件时有bug 源码 基础类 // // BaseControl.h // BaseControl // / ...
- php 代码编写规范
1 编写目的为了更好的提高技术部的工作效率,保证开发的有效性和合理性,并可最大程度的提高程序代码的可读性和可重复利用性,指定此规范.开发团队根据自己的实际情况,可以对本规范进行补充或裁减. 2 整体要 ...
- K8S Deployment 命令
创建 Deployment kubectl create -f https://kubernetes.io/docs/user-guide/nginx-deployment.yaml --record ...
- MVC5开发环境的配置
如果你打算在VS2012上开发MVC5,请通过WPI来安装此组件:ASP.NET and Web Tools 2013.1 version
- Scala编写的打印乘法口诀和金字塔
刚开始接触scala,觉得语法简单,一时兴起就写了两个简单的例子 public class Calculate { public static void test1(){ for(int i=1 ...
- 字节(byte)与位(bit)基础回顾
预估方式:一个uid,String类型,最长约50字节,即50Byte,一天100亿PV,则100亿*50Byte,约500G容量存ES中或Hbase中,无法存日志文件中,一个docker磁盘才50G ...
- 前端技术-HTML页面的加载
HTML页面的加载 HTML页面的加载实际上是基于http过程+浏览器对数据的解析渲染. http协议的请求过程是基于TCP协议的.http是要基于TCP连接基础上,简单的说,TCP单纯建立连接,不涉 ...
- windows10 激活方法
1.“以管理员身份”运行 依次输出以下命令: slmgr.vbs /upk 2. 接着输入以下命令: slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX 3. 继续输入以 ...