2016年度OSS協議会 第3回勉強会

Similar documents
intra-mart Accel Platform — OData for SAP HANA セットアップガイド   初版  

IBM i とクラウドのつなぎ 本アイ ビー エム株式会社 Power Systems テクニカル セールス 菅 丈

HARTING Node.js Environment for HAIIC MICA 日本語 HARTING Node.js Environment for HAIIC MICA HARTING IT Software Development Marienwerder Str. 3, E

Cisco CSS HTTP キープアライブと ColdFusion サーバの連携

LightSwitch で申請システム Windows ストアアプリで受付システムを構築してみた 情報政策グループ技術職員金森浩治 1. はじめに総合情報基盤センターでは 仮想サーバホスティングサービスや ソフトウェアライセンス貸与といった さまざまなエンドユーザ向けサービスを行っている 上記のよう

プレポスト【問題】

PowerPoint Presentation

2016年度OSS【Open技術分科会】活動報告

( 目次 ) 1. はじめに 開発環境の準備 仮想ディレクトリーの作成 ASP.NET のWeb アプリケーション開発環境準備 データベースの作成 データベースの追加 テーブルの作成

ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spar

IBM 次世代クラウド・プラットフォーム コードネーム “BlueMix”ご紹介

勉強会の流れ Google API の概要 デモ curl で実際に体験 Copyright 2010 SRA OSS, Inc. Japan All rights reserved. 2

モバイルバックエンド基盤 REST API リファレンス (API Gateway/Cloud Functions 編 ) Ver 年 9 月 22 日 日本電気株式会社

PHP 分科会 '12/01 OpenSource 協議会 System i 2012/01/26

スライド 1

第 7 回の内容 動的な Web サイト フォーム Web システムの構成

FW ファイルアップロード ダウンロード機能利用ガイド Version 年 9 月 21 日富士通株式会社 i All Right Reserved, Copyright FUJITSU LIMITED

セキュアブラウザについて セキュアブラウザは デスクネッツを自宅や外出先などから安全に利用するためのツール ( アプリ ) です セキュアブラウザというアプリを使用してデスクネッツを利用します 通常のブラウザアクセスと同じようにデスクネッツをご利用頂けます 端末の紛失 盗難による情報漏えいを防ぐため

本資料について 本資料は LOT-440: IBM WebSphere Portal and Portal Products Fundamentals を前提とした 技術者向けの学習資料です 本資料をヒントに次ページ情報源の情報を学習いただき 試験に臨んでください 2

PowerPoint プレゼンテーション

ステップ 1:APIC-EM API リソースの確認 このラボでは REST API の例として APIC-EM API を使用します 始める前に APIC-EM リソースを DevNet で確認しておく必要があります 1. ブラウザで DevNet にアクセスします Web ページの右上にある [

Sinatra と MongoDB 今回は Sinatra で MongoDB の操作を体験してみます 進捗に合わせて ドライバから Ruby で使える便利な ORM の紹介をします

(Microsoft Word - Compiere3.0Windows\203C\203\223\203X\203g\201[\203\213\203K\203C\203h.doc)

変更履歴 No 版数 更新日 変更箇所 変更内容 版 2017/6/26 - 新規作成 版 2018/3/ 法令 API 対象外の法令取得対象外となる法令データに係に関する事項る留意事項を追記 HTTP レスポンスコ 版 2018/3/

SAMBA Stunnel(Windows) 編 1. インストール 1 セキュア SAMBA の URL にアクセスし ログインを行います xxx 部分は会社様によって異なります xxxxx 2 Windows 版ダウンロード ボ

Cuoreテンプレート

WEBシステムのセキュリティ技術

ウェブサービスとは WWWを介してデータの取得 解析などをサー バ側で行うサービス 人が直接使うことは意図されていない プログラム等を使って大量に処理できる(単純) 作業を意図している SOAP, REST

FTPサーバーへのアクセス権限設定

「MT-3_2-ja

目次 第 1 章はじめに... 3 第 2 章ネットワーク設定 DNS の設定 アウトバウンド HTTPS 接続の許可 アウトバウンド SMTP/POP 接続の許可... 4 第 3 章 JDK への追加ライブラリインストール

S2BaseとZend Framework

intra-mart ワークフローデザイナ

1 ユーザ認証を受けた権限で アプリケーションを利用するために ログインプロキシにアクセスします 2 ログインプロキシにより Shibboleth SP から Shibboleth IdP の認証画面にリダイレクトされます 3 ブラウザに認証画面を表示します 4 認証画面にユーザ / パスワードを入

<4D F736F F D BC696B18F88979D939D90A782F08D6C97B682B582BD A DD975E8AC7979D CC8D5C927A2E6

Web のしくみと応用 ('15) 回テーマ 1 身近なWeb 2 Webの基礎 3 ハイパーメディアとHTML 4 HTMLとCSS 5 HTTP (1) 6 HTTP (2) 7 動的なWebサイト 8 クライアントサイドの技術 回 テーマ 9 リレーショナルデータベース 10 SQL とデータ


Si 知識情報処理

項番 現象 原因 対応手順書など 4 代理店コードでのダウンロード時に以下のメッセージの画面が表示される サービス時間外のため 現在 このサービスはご利用になれません 当機能のサービス時間外です 以下の時間帯にダウンロードしてください 月曜日 ~ 金曜日 7:00~21:00 土曜日 7:00~17

クラウド内の Java - 動画スクリプト 皆さん こんにちは Steve Perry です 私たちが作成した人事アプリケーションを覚えていますか? 今回は そのアプリケーションをクラウド内で実行しましょう コードは GitHub の

VPN 接続の設定

Wiki

Microsoft Word JA_revH.doc

メディプロ1 Javaサーブレット補足資料.ppt

在学生向けメールサービス

HTTP 404 への対処

リバースプロキシー (シングル構成) 構築手順

PowerPoint プレゼンテーション

インターネット EDI システムを使用する前の準備 目次 動作環境について... 2 Internet Explorer7.0 / 8.0 をご利用の場合の設定方法... 3 [1] インターネット EDI システムを利用するための標準的な設定... 3 [2] ブラウザ型で帳票を利用する場合に必要

セキュアブラウザについて セキュアブラウザは デスクネッツを自宅や外出先などから安全に利用するためのツール ( アプリ ) です セキュアブラウザというアプリを使用してデスクネッツを利用します 通常のブラウザアクセスと同じようにデスクネッツをご利用頂けます 端末の紛失 盗難による情報漏えいを防ぐため

セキュアブラウザについて セキュアブラウザは デスクネッツを自宅や外出先などから安全に利用するためのツール ( アプリ ) です セキュアブラウザというアプリを使用してデスクネッツを利用します 通常のブラウザアクセスと同じようにデスクネッツをご利用頂けます 端末の紛失 盗難による情報漏えいを防ぐため

~ アドレス収集くん ~ セキュリティ対策御説明資料

ikeyドライバインストール手順書

<4D F736F F D2089E696CA8F4390B35F B838B CA816A>

セキュアブラウザについて セキュアブラウザは デスクネッツを自宅や外出先などから安全に利用するためのツール ( アプリ ) です セキュアブラウザというアプリを使用してデスクネッツを利用します 通常のブラウザアクセスと同じようにデスクネッツをご利用頂けます 端末の紛失 盗難による情報漏えいを防ぐため

9 WEB監視

SmartBrowser_document_build30_update.pptx

新OS使用時の留意事項

untitled

Procedure-for-Azure-v1.1

ArcGIS for Server での Web マップの作成方法

ステップ 1:Cisco Spark にサインアップして試してみよう 1. Spark のホームページ ( で電子メールアドレスを入力し 指示に従って Spark アカウントを作成します 注 : 自身の電子メールアカウントにアクセスして Spar

Rmenuフレームワーク

MIRACLE LoadBalancerを使用したネットワーク構成と注意点

Delphi/400を使用したWebサービスアプリケーション

API( アプリケーションプログラミングインターフェイス ) は 2 つのソフトウェアが相互に通信する際の方式です あなたは通常 ソフトウェアとのインターフェイスにどのようなものを使用しているでしょうか たとえば Web ブラウザ (Web インターフェイス ) を開いて電子メールにアクセスしている

ITdumpsFree Get free valid exam dumps and pass your exam test with confidence

<4D F736F F F696E74202D208D E9197BF FC96E582C68AE98BC682AA F08CF68A4A82B782E D835A E

目次 1. はじめに 本文書の目的 前提条件 略語 事前準備 ホスト名の名前解決 Linux 版パッケージ システム要件 ソフトウェア要件 パッケージ構成

V-CUBE One

desknet's NEO スマートフォン版 セキュアブラウザについて セキュアブラウザは デスクネッツを自宅や外出先などから安全に利用するためのツール ( アプリ ) です セキュアブラウザというアプリを使用してデスクネッツを利用します 通常のブラウザアクセスと同じようにデスクネッツをご利用頂けま

国立国会図書館サーチとのOAI-PMH連携時に障害となるポイント

ArcGIS for Server 機能比較表

QNAP TurboNAS Container Station 設定手順書

S2Pradoの紹介

サイボウズ Office8 API マニュアル API 概要 第 1 版 サイボウズ株式会社

PowerPoint Presentation

内容 ( 演習 1) 脆弱性の原理解説 基礎知識 脆弱性の発見方法 演習 1: 意図しない命令の実行 演習解説 2

PowerPoint Presentation

(Microsoft PowerPoint - WQ21JDEadapter\215\\\220\254\216\350\217\207\217\221_ ppt)

2016年度OSS【Open技術分科会】第3回OSS勉強会

Blue Asterisk template

クライアント証明書導入マニュアル

— intra-mart Accel Platform セットアップガイド (WebSphere編)   第7版  

PowerPoint プレゼンテーション

アルファメール 移行設定の手引き Outlook2016

<4D F736F F D FC8E448FEE95F1837C815B835E838B C8F92E88B608F912E646F63>

(8) [ 全般 ] タブをクリックします (9) [ インターネット一時ファイル ] の [ 設定 ] ボタンをクリックします (10) [ 保存しているページの新しいバージョンの確認 ] から [ ページを表示するごとに確認する ] をクリックします (11) [OK] ボタンをクリックしていき

PC にソフトをインストールすることによって OpenVPN でセキュア SAMBA へ接続することができます 注意 OpenVPN 接続は仮想 IP を使用します ローカル環境にて IP 設定が被らない事をご確認下さい 万が一仮想 IP とローカル環境 IP が被るとローカル環境内接続が行えなくな

1. 概要 この章では HDE Controller X LG Edition をお使いの方に向けて LGWAN 接続に特化した設定の説明をします HDE Controller X LG Edition 以外の製品をご利用のお客様はこの章で解説する機能をお使いになれませんのでご注意ください 452

ESET NOD32 アンチウイルス 6 リリースノート

GRIDY SFA Google Apps カレンダー連携 操作ガイド (1.0 版 ) 2016 年 3 月 16 日 KDDI 株式会社

desknet's NEO スマートフォン版セキュアブラウザ端末認証あり利用ガイド ios 編 セキュアブラウザについて セキュアブラウザは デスクネッツを自宅や外出先などから安全に利用するためのツール ( アプリ ) です セキュアブラウザというアプリを使用してデスクネッツを利用します 通常のブラ

WLX302 取扱説明書

PowerPoint プレゼンテーション

ESET Smart Security 7 リリースノート

利用者

Oracle Web CacheによるOracle WebCenter Spacesパフォーマンスの向上

使える! IBM Systems Director Navigator for i の新機能

VB実用Ⅲ⑩ フリーデータベースⅡ

Transcription:

2016 年度 OSS 協議会第 3 回勉強会 2016 年 12 月 9 日 株式会社オムニサイエンス田中昌宏

IBMi の Node.js で API をつくるにあたって やるなら Restful な設計で作成してみる Toolkit を使って RPG と連携してみる

その前に Rest とは ( 概要 ) Representation State Transfer(REST) HTTP 仕様に準拠した Web サービス REST の原則に従って実装されているシステムのことを RESTful と呼ぶ シンプルである 何を どうする の簡単なインターフェース

Restの原則 ~その1 URI(URL) の設計 一目でAPIと判る APIのバージョンを含める 複数形の名詞のみで構成 http://example.com/api/v1/customers

Rest の原則 ~ その 2 インターフェース (HTTP メソッドの利用 ) の統一 REST で用いられる HTTP メソッドは下記のようにデータの CRUD 操作と対応付けられる 処理 HTTP メソッド CRUD 操作 登録 POST CREATE 取得 GET READ 更新 PUT UPDATE 削除 DELETE DELETE

Rest の原則 ~ その 3 ステートレスである ステート ( 状態 ) レス ( 無い ) とは クライアント側とサーバー側で情報を共有しない常に同じ振る舞いとなる スケーラビリティに優れる 負荷を推測しやすい

Rest の原則 ~ その 4 処理結果を HTTP ステータスコードで通知 サーバはクライアントのリクエストに対するレスポンスに以下の適切なレスポンスコードを返さなければならない コード状態説明 200 OK リクエストが正常に処理された 201 Created リクエストが正常に処理され 新規リソースが作成された 204 No Content リクエストが正常に処理されたが 返す新規情報はない 400 Bad Request サーバーが理解できない無効な要求である 401 Unauthorized 要求されたリソースには認証が必要である 403 Forbidden 要求されたリクエストは拒否された 404 Not Found 要求されたリソースはサーバーに存在しない 500 Internal Server Error サーバーでエラーが発生した

Rest の原則 ~ その 5 JSON または XML をレスポンス 標準的なデータフォーマットで連携が容易

Rest と Soap の違い Rest ネットワーク上のコンテンツ ( リソース ) を一意な URL で表すのが基本 各リソース (URI) に対して GET,POST,PUT,DELETE でリクエストを送信しレスポンスを XML や json などで受け取る形式 URL がリソースに対応づけられるため URL は名詞的になることが多い Soap Soap は SimpleObject Access Protocol の略 リクエストおよびレスポンスともに XML フォーマットのデータで行う形式 SOAP の URL は操作と対応づけられるため URL の命名が動詞的になることが多い

Rest と Soap の棲み分け Rest 不特定多数を対象にした 入力パラメータが少ない情報配信や検索サービス等での利用に向いている Soap 複雑な入力を必要としたり 入出力に対してチェックを必要とするようなサービス等での利用に向いている

クロスドメインの制約について クロスドメインの制約 別ドメインのサーバーに Ajax(XMLHttpRequest) リクエストすることは不可 ( ブラウザでエラー )

クロスドメインの制約について どうするか クライアント側 ( ブラウザ ) で対応 JSONP(JSON With Padding) を利用 サーバー側で対応 CORS(Cross-Origin-Resource-Sharing) を許可

今回作ったものの紹介 ~ 仕様編 クラウド環境 将来的には BlueMix を想定 Web サーバー IBM i 協議会ネットワーク AngularJS アプリ SQL 顧客情報 ローカル Node.JS API ブラウザ 顧客情報全件取得リクエスト (Ajax) GET JSON findbyall 全件取得 登録用 RPG 顧客情報登録リクエスト (Ajax) POST JSON insert 登録 XMLToolkit

今回作ったものの紹介 ~ 環境編 IBMi OS :V7R3 Node.js :v4.6.1 15733OPS Option 5 導入 2PTF SI59404 適用 3/QOpenSys/QIBM/ProdData/OPS/Node4 にインストールされる npm :2.15.9

今回作ったものの紹介 ~ 環境編 開発準備 //PATH の設定 export PATH=/QOpenSys/QIBM/ProdData/OPS/Node4/bin:$PATH export LIBPATH=/QOpenSys/QIBM/ProdData/OPS/Node4/bin:$LIBPATH // ディレクトリを作成 mkdir /home/node/ cd /home/node/ //express-generator をインストール npm install express-generator //express-generator で express プロジェクト雛形を作成 /home/node/node_modules/express-generator/bin/express osssample

今回作ったものの紹介 ~ 環境編 //package.json の編集 "dependencies": { "body-parser": " 1.13.2", "cookie-parser": " 1.3.5", "corser": "latest", // 追加 "forever": "latest", // 追加 "express": " 4.13.1" } cd /home/node/osssample //package.json に基づいて npm インストール npm install // ポートの変更 (bin/www) var port = normalizeport(process.env.port '80'); // 3000 から変更

今回作ったものの紹介 ~ 環境編 // デーモン起動 (forever で実行 ) /home/node/osssample/node_modules/forever/bin/forever start bin/www // ブラウザからアクセス Express のトップ画面が表示された

今回作ったものの紹介 ~ 環境編 使用した npm ライブラリの説明 express Express とは Node.js 上で動作する MVC フレームワーク express-generator Express のプロジェクト雛形を自動作成する corser クロスドメインをサーバー側で許可する forever node.js スクリプトのデーモン化

今回作ったものの紹介 ~ ソース編 ディレクトリ構成 (Express4) osssample app.js bin アプリのメインファイル すべてのリクエストに共通する設定 処理を記述 サーバープロセスの起動処理の格納ディレクトリ www サーバープロセスの起動処理 node_modules package.json public routes npmライブラリの格納ディレクトリ プロジェクトの名前 バージョン npmライブラリなどを定義する設定ファイル 静的リソース(Javascript, CSS, イメージファイルなど ) を格納するディレクトリ ルーティング処理を格納するディレクトリ customers.js 新規作成 今回作成した顧客情報リソースを扱うスクリプト views UI を格納するディレクトリ

app.js 今回作ったものの紹介 ~ ソース編 var express = require('express'); var bodyparser = require('body-parser'); var corser = require("corser"); // CORS 許可ライブラリの使用 var customers = require('./routes/customers'); // ルーティングの定義 var app = express(); app.use(bodyparser.json()); app.use(bodyparser.urlencoded({ extended: false })); app.use(corser.create()); // CORS 許可 // リクエストURI 毎のルーティング app.get('/api/v1/customers', customers.index); // 全件取得 app.get('/api/v1/customers/:id', customers.show); // 1 件取得 app.post('/api/v1/customers', customers.create); // 登録 app.put('/api/v1/customers/:id', customers.update); // 変更 app.delete('/api/v1/customers/:id', customers.destroy); // 削除

今回作ったものの紹介 ~ ソース編 // catch 404 and forward to error handler app.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); }); // error handler app.use(function(err, req, res, next) { // set locals, only providing error in development res.locals.message = err.message; res.locals.error = req.app.get('env') === 'development'? err : {}; // render the error page res.status(err.status 500); res.render('error'); }); module.exports = app;

今回作ったものの紹介 ~ ソース編 customers.js 新規作成 // db2 接続 XMLToolkit ライブラリ使用 var db =require('/qopensys/qibm/proddata/ops/node4/os400/db2i/lib/db2'); var xt = require('/qopensys/qibm/proddata/ops/node4/os400/xstoolkit/lib/itoolkit'); module.exports = { index : function (req, res) { // 全件取得 db.init(); db.conn("*local"); db.exec("select CM01,CM02,CM03,CM04,CM05 FROM OSSSAMPLE.CUSINF", function(customers) { res.writehead(200, { 'Content-Type':'application/json; charset=utf-8', }); res.end(json.stringify(customers)); }); db.close(); },

今回作ったものの紹介 ~ ソース編 create : function (req, res) { // 登録 var conn = new xt.iconn("*local"); conn.add(xt.icmd("addlible LIB(OSSSAMPLE) POSITION(*LAST)")); var pgm = new xt.ipgm("create", {"lib":"*libl"}); pgm.addparam(req.body.cm01,"42a"); pgm.addparam(req.body.cm02,"42a"); pgm.addparam(req.body.cm03,"22a"); pgm.addparam(req.body.cm04,"14a"); pgm.addparam(req.body.cm05,"20a"); conn.add(pgm.toxml()); conn.run(function (rsp) { var results = xt.xmltojson(rsp); res.writehead(200, { 'Content-Type':'application/json; charset=utf-8' }); res.end(json.stringify(results[1])); }); },

今回作ったものの紹介 ~ ソース編 show : function (req, res) { // TODO: 1 件取得 res.send('show'); }, update : function (req, res) { // TODO: 変更 res.send('update'); }, destroy : function (req, res) { // TODO: 削除 res.send('destroy'); } };

今回作ったものの紹介 ~ 実行編 確認ツールは以下を使用 Advanced REST client(chrome 拡張 )

今回作ったものの紹介 ~ 実行編 ( デモ ) GET( 全件取得 )

今回作ったものの紹介 ~ 実行編 ( デモ ) POST( 登録 )

今回作ったものの紹介 ~ 実行編 ( デモ ) DELETE( 削除 ) 未実装

API の今後の可能性 API を使ったビジネス API 公開によって自社だけでなく 他社のサービスも活用して広がっていく商圏 ( 経済圏 ) API エコノミー 例えば 今 IBMi にあるリソース ( データ プログラム ) を外部から API で活用し合うビジネスがくるかも?

API 公開時の考慮点 セキュリティー 誰もが使える? 認証は? リクエスト数 データ量 制限が必要? サーバーリソースは大丈夫? インターフェース仕様の周知 手段 バージョン管理は?

IBMi のリソースを API を通じて安全に公開するには BlueMix SecureGateway を利用したハイブリッドクラウド IBM API Connect