Submit Search
Upload
[JavaDo] JAX-RS ハンズオン 第2部
•
Download as PPTX, PDF
•
1 like
•
788 views
H
haruki ueno
Follow
JavaDo #08のハンズオン資料です。 Jerseyを使った実装について触れています
Read less
Read more
Technology
Report
Share
Report
Share
1 of 31
Download now
Recommended
Spring bootでweb セキュリティ(ログイン認証)編
Spring bootでweb セキュリティ(ログイン認証)編
なべ
Spring bootでweb 基本編
Spring bootでweb 基本編
なべ
はじめてのSpring Boot
はじめてのSpring Boot
なべ
Spring Integration 超入門
Spring Integration 超入門
Yasutaka Sugamura
Laravelの認証について
Laravelの認証について
Takeo Noda
Spring integration概要
Spring integration概要
kuroiwa
Jenkinsプラグイン開発
Jenkinsプラグイン開発
Takahisa Wada
Spring bootでweb バリデート編
Spring bootでweb バリデート編
なべ
Recommended
Spring bootでweb セキュリティ(ログイン認証)編
Spring bootでweb セキュリティ(ログイン認証)編
なべ
Spring bootでweb 基本編
Spring bootでweb 基本編
なべ
はじめてのSpring Boot
はじめてのSpring Boot
なべ
Spring Integration 超入門
Spring Integration 超入門
Yasutaka Sugamura
Laravelの認証について
Laravelの認証について
Takeo Noda
Spring integration概要
Spring integration概要
kuroiwa
Jenkinsプラグイン開発
Jenkinsプラグイン開発
Takahisa Wada
Spring bootでweb バリデート編
Spring bootでweb バリデート編
なべ
SpringOne 2GX 2014 参加報告 & Spring 4.1について #jsug
SpringOne 2GX 2014 参加報告 & Spring 4.1について #jsug
Toshiaki Maki
Spring Framework ふりかえりと4.3新機能
Spring Framework ふりかえりと4.3新機能
kimulla
REST with Spring Boot #jqfk
REST with Spring Boot #jqfk
Toshiaki Maki
Heroku java
Heroku java
Kazuyuki Kawamura
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
Toshiaki Maki
Spring Security 4.1 の新機能
Spring Security 4.1 の新機能
正和 井岡
Spring と TDD
Spring と TDD
Takeshi Ogawa
Spring Bootで変わる Javaアプリ開発! #jsug
Spring Bootで変わる Javaアプリ開発! #jsug
Toshiaki Maki
JavaScriptでWebDriverのテストコードを書きましょ
JavaScriptでWebDriverのテストコードを書きましょ
Kohki Nakashima
明日から使えるgradle
明日から使えるgradle
kimukou_26 Kimukou
WildFly Swarm In Progress
WildFly Swarm In Progress
Yoshimasa Tanabe
Selenium webdriver使ってみようず
Selenium webdriver使ってみようず
Oda Shinsuke
TDD勉強会キックオフ for Java
TDD勉強会キックオフ for Java
Yuta Kawadai
Spring fest2020 spring-security
Spring fest2020 spring-security
土岐 孝平
WildFly Swarmではじめる「パーツとしてのJavaEE」
WildFly Swarmではじめる「パーツとしてのJavaEE」
Hiroaki NAKADA
Introduction to WildFly Swarm #jjug
Introduction to WildFly Swarm #jjug
Yoshimasa Tanabe
A HUGE CHANGE RAILS 5 IS APPROACHING FAST
A HUGE CHANGE RAILS 5 IS APPROACHING FAST
Kenichi Tachibana
Spring Fest 2018 Spring Bootで作るRESTful Web Service
Spring Fest 2018 Spring Bootで作るRESTful Web Service
WataruOhno
これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
Masatoshi Tada
Hokuriku.NET ASP.NET MVC 入門 2 回目 1.編集機能を実装
Hokuriku.NET ASP.NET MVC 入門 2 回目 1.編集機能を実装
miso- soup3
Terraforming
Terraforming
Tomoaki Yahagi
はじめてのGit #gitkyoto
はじめてのGit #gitkyoto
Hisateru Tanaka
More Related Content
What's hot
SpringOne 2GX 2014 参加報告 & Spring 4.1について #jsug
SpringOne 2GX 2014 参加報告 & Spring 4.1について #jsug
Toshiaki Maki
Spring Framework ふりかえりと4.3新機能
Spring Framework ふりかえりと4.3新機能
kimulla
REST with Spring Boot #jqfk
REST with Spring Boot #jqfk
Toshiaki Maki
Heroku java
Heroku java
Kazuyuki Kawamura
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
Toshiaki Maki
Spring Security 4.1 の新機能
Spring Security 4.1 の新機能
正和 井岡
Spring と TDD
Spring と TDD
Takeshi Ogawa
Spring Bootで変わる Javaアプリ開発! #jsug
Spring Bootで変わる Javaアプリ開発! #jsug
Toshiaki Maki
JavaScriptでWebDriverのテストコードを書きましょ
JavaScriptでWebDriverのテストコードを書きましょ
Kohki Nakashima
明日から使えるgradle
明日から使えるgradle
kimukou_26 Kimukou
WildFly Swarm In Progress
WildFly Swarm In Progress
Yoshimasa Tanabe
Selenium webdriver使ってみようず
Selenium webdriver使ってみようず
Oda Shinsuke
TDD勉強会キックオフ for Java
TDD勉強会キックオフ for Java
Yuta Kawadai
Spring fest2020 spring-security
Spring fest2020 spring-security
土岐 孝平
WildFly Swarmではじめる「パーツとしてのJavaEE」
WildFly Swarmではじめる「パーツとしてのJavaEE」
Hiroaki NAKADA
Introduction to WildFly Swarm #jjug
Introduction to WildFly Swarm #jjug
Yoshimasa Tanabe
A HUGE CHANGE RAILS 5 IS APPROACHING FAST
A HUGE CHANGE RAILS 5 IS APPROACHING FAST
Kenichi Tachibana
Spring Fest 2018 Spring Bootで作るRESTful Web Service
Spring Fest 2018 Spring Bootで作るRESTful Web Service
WataruOhno
これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
Masatoshi Tada
Hokuriku.NET ASP.NET MVC 入門 2 回目 1.編集機能を実装
Hokuriku.NET ASP.NET MVC 入門 2 回目 1.編集機能を実装
miso- soup3
What's hot
(20)
SpringOne 2GX 2014 参加報告 & Spring 4.1について #jsug
SpringOne 2GX 2014 参加報告 & Spring 4.1について #jsug
Spring Framework ふりかえりと4.3新機能
Spring Framework ふりかえりと4.3新機能
REST with Spring Boot #jqfk
REST with Spring Boot #jqfk
Heroku java
Heroku java
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
Spring Security 4.1 の新機能
Spring Security 4.1 の新機能
Spring と TDD
Spring と TDD
Spring Bootで変わる Javaアプリ開発! #jsug
Spring Bootで変わる Javaアプリ開発! #jsug
JavaScriptでWebDriverのテストコードを書きましょ
JavaScriptでWebDriverのテストコードを書きましょ
明日から使えるgradle
明日から使えるgradle
WildFly Swarm In Progress
WildFly Swarm In Progress
Selenium webdriver使ってみようず
Selenium webdriver使ってみようず
TDD勉強会キックオフ for Java
TDD勉強会キックオフ for Java
Spring fest2020 spring-security
Spring fest2020 spring-security
WildFly Swarmではじめる「パーツとしてのJavaEE」
WildFly Swarmではじめる「パーツとしてのJavaEE」
Introduction to WildFly Swarm #jjug
Introduction to WildFly Swarm #jjug
A HUGE CHANGE RAILS 5 IS APPROACHING FAST
A HUGE CHANGE RAILS 5 IS APPROACHING FAST
Spring Fest 2018 Spring Bootで作るRESTful Web Service
Spring Fest 2018 Spring Bootで作るRESTful Web Service
これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
Hokuriku.NET ASP.NET MVC 入門 2 回目 1.編集機能を実装
Hokuriku.NET ASP.NET MVC 入門 2 回目 1.編集機能を実装
Viewers also liked
Terraforming
Terraforming
Tomoaki Yahagi
はじめてのGit #gitkyoto
はじめてのGit #gitkyoto
Hisateru Tanaka
Railsチュートリアル(second)を終えて
Railsチュートリアル(second)を終えて
Hirata Tomoko
git gitにされたオレの屍を超えていけ
git gitにされたオレの屍を超えていけ
Daisuke Kasuya
サラリーマンでギョーミーなプログラマ(つまりオレ)でも片手間で作れるXFD
サラリーマンでギョーミーなプログラマ(つまりオレ)でも片手間で作れるXFD
Kazuhito Miura
SCMBC Git入門セッション発表資料
SCMBC Git入門セッション発表資料
bleis tift
Wagby on Cloud Foundry
Wagby on Cloud Foundry
Tomohiro Ichimura
ゆかりん時計の話
ゆかりん時計の話
MakTak
140611だいたいわかるGit
140611だいたいわかるGit
Masashi Tsuru
Git 入門
Git 入門
y-uti
BACKBONEJS+SCSS+JavaEE(JAX-RS) 今風のWebアプリをNetBeansで入門!
BACKBONEJS+SCSS+JavaEE(JAX-RS) 今風のWebアプリをNetBeansで入門!
Toshio Ehara
Gitの使い方あれこれ
Gitの使い方あれこれ
よしだ あつし
カラーマネジメント入門
カラーマネジメント入門
mdome
Git勉強会 2016 Gitで卒論を管理しよう回
Git勉強会 2016 Gitで卒論を管理しよう回
kinme modoki
やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013
DQNEO
Git (実践入門編)
Git (実践入門編)
Naomichi Yamakita
UnityでVRアプリを作ってみよう! (ハンズオン編)
UnityでVRアプリを作ってみよう! (ハンズオン編)
Masahiro Ide
測って図る:データ駆動型サービス工学の実践
測って図る:データ駆動型サービス工学の実践
Kurata Takeshi
Chainerライブコーディング
Chainerライブコーディング
m3 329
SourceTreeで始めよう! Gitへの乗り換え指南
SourceTreeで始めよう! Gitへの乗り換え指南
Kouji Matsui
Viewers also liked
(20)
Terraforming
Terraforming
はじめてのGit #gitkyoto
はじめてのGit #gitkyoto
Railsチュートリアル(second)を終えて
Railsチュートリアル(second)を終えて
git gitにされたオレの屍を超えていけ
git gitにされたオレの屍を超えていけ
サラリーマンでギョーミーなプログラマ(つまりオレ)でも片手間で作れるXFD
サラリーマンでギョーミーなプログラマ(つまりオレ)でも片手間で作れるXFD
SCMBC Git入門セッション発表資料
SCMBC Git入門セッション発表資料
Wagby on Cloud Foundry
Wagby on Cloud Foundry
ゆかりん時計の話
ゆかりん時計の話
140611だいたいわかるGit
140611だいたいわかるGit
Git 入門
Git 入門
BACKBONEJS+SCSS+JavaEE(JAX-RS) 今風のWebアプリをNetBeansで入門!
BACKBONEJS+SCSS+JavaEE(JAX-RS) 今風のWebアプリをNetBeansで入門!
Gitの使い方あれこれ
Gitの使い方あれこれ
カラーマネジメント入門
カラーマネジメント入門
Git勉強会 2016 Gitで卒論を管理しよう回
Git勉強会 2016 Gitで卒論を管理しよう回
やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013
Git (実践入門編)
Git (実践入門編)
UnityでVRアプリを作ってみよう! (ハンズオン編)
UnityでVRアプリを作ってみよう! (ハンズオン編)
測って図る:データ駆動型サービス工学の実践
測って図る:データ駆動型サービス工学の実践
Chainerライブコーディング
Chainerライブコーディング
SourceTreeで始めよう! Gitへの乗り換え指南
SourceTreeで始めよう! Gitへの乗り換え指南
Similar to [JavaDo] JAX-RS ハンズオン 第2部
React Native GUIDE
React Native GUIDE
dcubeio
Nseg20120929
Nseg20120929
hiro345
TDC20111031_Groovy_Geb
TDC20111031_Groovy_Geb
Nobuhiro Sue
G*workshop 2011/11/22 Geb+Betamax
G*workshop 2011/11/22 Geb+Betamax
Nobuhiro Sue
Maven2 プラグイン入門
Maven2 プラグイン入門
guestd4898b
Gws 20130315 gradle_handson
Gws 20130315 gradle_handson
Nobuhiro Sue
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
Takayoshi Tanaka
ありえるえりあ勉強会@五反田~テスト編~ Part3
ありえるえりあ勉強会@五反田~テスト編~ Part3
Tomoyuki Sato
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
JPCERT Coordination Center
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
Y Watanabe
運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話
運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話
KLab Inc. / Tech
Ansible2.0と実用例
Ansible2.0と実用例
OSSラボ株式会社
Struts2を始めよう!
Struts2を始めよう!
Shinpei Ohtani
JavaScript.Next
JavaScript.Next
dynamis
Unit testing JavaScript with JUnit/JavaFX
Unit testing JavaScript with JUnit/JavaFX
Shinya Mochida
Visual studio de debug
Visual studio de debug
Kazushi Kamegawa
Try_to_writecode_practicaltest #atest_hack
Try_to_writecode_practicaltest #atest_hack
kimukou_26 Kimukou
Capistranoで自動デプロイ
Capistranoで自動デプロイ
toyoshi
Android test tutorial
Android test tutorial
Kazuaki Ueda
ScalaでAndroidアプリ開発
ScalaでAndroidアプリ開発
papamitra
Similar to [JavaDo] JAX-RS ハンズオン 第2部
(20)
React Native GUIDE
React Native GUIDE
Nseg20120929
Nseg20120929
TDC20111031_Groovy_Geb
TDC20111031_Groovy_Geb
G*workshop 2011/11/22 Geb+Betamax
G*workshop 2011/11/22 Geb+Betamax
Maven2 プラグイン入門
Maven2 プラグイン入門
Gws 20130315 gradle_handson
Gws 20130315 gradle_handson
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
ありえるえりあ勉強会@五反田~テスト編~ Part3
ありえるえりあ勉強会@五反田~テスト編~ Part3
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話
運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話
Ansible2.0と実用例
Ansible2.0と実用例
Struts2を始めよう!
Struts2を始めよう!
JavaScript.Next
JavaScript.Next
Unit testing JavaScript with JUnit/JavaFX
Unit testing JavaScript with JUnit/JavaFX
Visual studio de debug
Visual studio de debug
Try_to_writecode_practicaltest #atest_hack
Try_to_writecode_practicaltest #atest_hack
Capistranoで自動デプロイ
Capistranoで自動デプロイ
Android test tutorial
Android test tutorial
ScalaでAndroidアプリ開発
ScalaでAndroidアプリ開発
Recently uploaded
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
Recently uploaded
(12)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
[JavaDo] JAX-RS ハンズオン 第2部
1.
JAX-RS ハンズオン 第2部 JavaDo
#08
2.
環境セットアップ ➤ 教科書のURL https://goo.gl/ZeHR28 ➤ ハンズオン[環境セットアップ]の手順URL https://goo.gl/m3XIAj ➤
下の手順ぐらいまで順次進めてください 1. https://github.com/java-do/20170115_seminar にブラウザでアクセスしよう 2. 本ハンズオン用Mavenプロジェクトをダウンロードしよう 1. zipで取り込む方は「Clone or Download」から「Download ZIP」を選択 2. gitで取り込む方は「https://github.com/java-do/20170115_seminar.git」で 3. 本ハンズオンでは1の場合を前提に進めます 3. ダウンロードしたMavenプロジェクトをIDEで読み込もう 4. 起動の確認をしよう 5. Advanced REST client (chromeのplugin)をインストールしよう 前回入れた方は再度インストール不要です
3.
agenda ➤ 環境セットアップ ➤ 前回の復習 ➤
例外ハンドリング ➤ ExceptionMapper ➤ JSONを返す ➤ ファイルアップロード ➤ Multipart版 ➤ シンプル版
4.
自己紹介 ➤ 上野 春毅 ➤
JavaDo運営メンバー ➤ 燃料:コーヒー ➤ 最近、GuiceとSql2oのプログラム書いてます
5.
前回の 復習
6.
RESTとは ➤ Representational State
Transfer(REST) ➤ Webのメディアを扱うための概念 ➤ HTTPかつJSON(or XML)のインターフェース ➤ WEB-API実装に利用 シングルページアプリケーションなどの フロントエンドに対するバックエンド側 たとえば下のようなもの https://goo.gl/ZkmWls ➤ RESTを実装するには、JavaではJAX-RS
7.
JAX-RS ➤ Java API
for RESTful Web Services ➤ RESTに基づいたWebサービスをJavaで実装するための(Java EEの)API仕様 ➤ 実装はアノテーションベース ➤ とにかくシンプルに開発できる ➤ JAX-RSを実装したライブラリとして、Jerseyを使います
8.
RESTの概念 ➤ Webでアクセスできるリソースを操作 ➤ Webでアクセスできるとは ➤
HTTPのURI(例:http://hoge.jp/ap/resource) ➤ リソースとは ➤ 例えば、商品、アカウントなど ➤ /ap/product/200 ➤ 200番の商品 ➤ 操作とは ➤ 取得、登録、変更、削除 ➤ GET、POST、PUT、DELETE ➤ これをHTTP通信にすると「GET /ap/resource HTTP/1.1」 ➤ 訳すと「アプリケーションのリソースを取得する」(HTTPバージョン1.1のプロトコルに従って)
9.
JAX-RSの実装例 @Path(“/product”) ・・・・・①URI: /ap/product public
class ProductResource { @GET ・・・・・②GETで @Produces(MediaType.APPLICATION_JSON) ・・・③JSONで返却 public Product getProduct(){ ・・・④商品を Product product = new Product(); product.setName(“JavaDo“); return product; } }
10.
復習用にコードを書いてみましょう ➤ jp.javado.jaxrs.resource.SampleResourceにコードを追加しま しょう ➤ jp.javado.jaxrs.resource_example.SampleResourceを参照 ➤
@GET, @POST, @PUT, @DELETE ➤ 書いたらRest Clientを使って動かしてみましょう
11.
REST Clientで叩いてみましょう http://localhost:8080/rest/api/sample POST application/json
12.
エラー処理 を作ってみましょう
13.
エラー処理の方法 その1(前回) ➤ 処理の中でそのままエラー処理を書く @PUT @Path("{id}") @Consumes(MediaType.APPLICATION_JSON) public
Response putProducts(@PathParam("id") int id, Product product) { IDAOMock dao = DAOMock.getInstance(); try { dao.update(id, product); return Response.ok().build(); } catch (Exception e) { e.printStackTrace(); int status = 400; return Response.status(status).build(); } } HTTP ステータスコード:400 (Bad Request)を返却
14.
エラー処理の方法 その2 (前回) ➤
WebApplicationExceptionクラスをスローする @PUT @Path("{id}") @Consumes(MediaType.APPLICATION_JSON) public Response putProducts(@PathParam("id") int id, Product product) { IDAOMock dao = DAOMock.getInstance(); try { dao.update(id, product); return Response.ok().build(); } catch (Exception e) { e.printStackTrace(); throw new WebApplicationException(400); } }
15.
エラー処理の方法 その3(前回) ➤ ExceptionMapperを使う場合 @PUT @Path("{id}") @Consumes(MediaType.APPLICATION_JSON) public
Response putProducts(@PathParam("id") int id, Product product) { IDAOMock dao = DAOMock.getInstance(); try { dao.update(id, product); return Response.ok().build(); } catch (Exception e) { e.printStackTrace(); throw e; } } この場合、HogeExceptionをスローする
16.
エラー処理の方法 その3(今回) ➤ ExceptionMapperの作り方 ➤
このクラスを書いてみましょう @Provider public class RuntimeExceptionMapper implements ExceptionMapper<RuntimeException> { @Override public Response toResponse(RuntimeException e) { System.out.println(“RuntimeExceptionMapper execute"); e.printStackTrace(); return Response.status(Response.Status.SERVICE_UNAVAILABLE).build(); } } ExceptionMapper<RuntimeException>と書くと、 RuntimeExceptionが発生した場合の処理を作ることができる ジェネリクスで指定するExceptionクラスはなんでも良い
17.
エラー処理の方法 その3(今回) import jp.javado.db.ProductDatabase; import
jp.javado.jaxrs.pojo.Product; /* 省略 */ @GET @Path("/{id}") @Produces(MediaType.APPLICATION_JSON) public Product get(@PathParam("id") int id) throws RestException { Product product = ProductDatabase.select(id); return product; } jp.javado.jaxrs.resource.ProductResourceを新規作成し、以下の内容を記述
18.
エラー処理の方法 その3(今回) ➤ ProductResourceのgetメソッド内でRuntimeExceptionをスローしてみ ましょう ➤
まずは簡単に以下で ➤ 書けた方は、REST Clientでアクセスしてみましょう ➤ 下部のStatusが503 Service Unavailable と出る ➤ Response.Status.SERVICE_UNAVAILABLEを指定しているため ➤ Response.Status.INTERNAL_SERVER_ERRORとかに変えて 試してみましょう if (true) throw new RuntimeException();
19.
独自定義のExceptionをハンドリング ➤ アプリケーションで定義したExceptionクラスをハンドリング する方法についてです ➤ 本ハンズオン用に以下のExceptionを用意しました ➤
RestException ➤ RestRuntimeException
20.
独自定義Exceptionをハンドリング ➤ 以下を書いてみましょう ➤ RestExceptionMapperを書いてみましょう ➤
RestRuntimeExceptionMapperを書いてみましょう ➤ 場所:jp.javado.jaxrs.exceptionパッケージに*Mapperを作成 ➤ 今回は以下のクラスを用意しています ➤ ErrorCaseはエラーの内容を表すクラス ➤ ErrorMessageクラスはクライアントに返却するJson用クラス
21.
独自定義Exceptionをハンドリング ➤ 以下を書いてみましょう ➤ RestExceptionをProductResourceに書いてみましょう ➤
jp.javado.jaxrs.resourceexample.ExampleProductResource#get( )を見て修正 ➤ RestRuntimeExceptionをProductResourceに書いてみましょう ➤ 上記をRestExceptionをRestRuntimeExceptionに変更してみる ➤ 場所:jp.javado.jaxrs.resourceパッケージのProductResourceを加 筆
22.
独自定義Exceptionをハンドリング ➤ Rest Clientを使って動かしてみましょう ➤
アクセス方法は今までと同じ
23.
ファイル アップロード
24.
ファイルアップロード ➤ HTTP通信のリクエストボディにファイルデータを載せてくる ➤ 代表例:multipart/form-data <form
action="ファイル処理URI" method="post" enctype="multipart/form-data"> ... 氏名 :<input type="text" name="username" /> 送信ファイル:<input type="file" name="submitfile" /> ... </form>
25.
ファイルアップロードを書いてみましょう ➤ jp.javado.jaxrs.resourcesample.ExampleProductResource#fileupload() ➤ jp.javado.jaxrs.resourcesample.ExampleProductResourceのフィールド ➤
上記を書き写してみましょう
26.
ファイルアップロードをしてみましょう ➤ Rest Clientでファイルアップロードの方法 ➤
http://localhost:8080/rest/api/product/fileupload/multipart ➤ POST ➤ multipart/form-data ➤ [Files]を押す ➤ [ADD ANOTHER FILE]を押す ➤ [CHOOSE FILES]を押してファイルを選択 ➤ fileUploadと書いてあるところはそのまま ➤ [SEND]を押す ➤ 「Staus: 201 Created」が出たらOK、FILE_SAVE_PATHにファイルを確認
27.
ファイルアップロードの仕組み ➤ HTTP通信で以下のリクエストが来る(通信内容全文) POST /rest/api/product/fileupload/multipart
HTTP/1.1 HOST: localhost:8080 content-type: multipart/form-data; boundary=----WebKitFormBoundary4XSJradEgR8nMn8B content-length: 914 ------WebKitFormBoundary4XSJradEgR8nMn8B Content-Disposition: form-data; name="fileUpload"; filename="sample1.jpeg" Content-Type: image/jpg [jpegデータの中身] ------WebKitFormBoundary4XSJradEgR8nMn8B--
28.
ファイルアップロードの仕組み ➤ プログラムとの対応 POST /rest/api/product/fileupload/multipart
HTTP/1.1 HOST: localhost:8080 content-type: multipart/form-data; boundary=----WebKitFormBoundary4XSJradEgR8nMn8B content-length: 914 ------WebKitFormBoundary4XSJradEgR8nMn8B Content-Disposition: form-data; name="fileUpload"; filename="sample1.jpeg" Content-Type: image/jpg [jpegデータの中身] ------WebKitFormBoundary4XSJradEgR8nMn8B-- @Consumes(MediaType.MULTIPART_FORM_DATA) @FormDataParam("fileUpload") InputStream @FormDataParam("fileUpload") FormDataContentDisposition @FormDataParam("fileUpload") FormDataBodyPart
29.
Google Drive APIで提供されているファイルアップ ロード ➤
参照URLは以下 ➤ https://developers.google.com/drive/v2/reference/files/insert ➤ 「google drive api insert」でググって一番上に出てくるのでもい けます
30.
Media - Simple
Uploadの仕様をコードで書いてみま しょう ➤ ついでにファイル名(独自拡張)も受け取れるようにしてみましょう ➤ 以下を書きうつしてください ➤ jp.javado.jaxrs.resourceexample.ExmpleProductResource#fileuploadSimple ➤ 注釈(念のため!) ➤ リクエストのAPI仕様を受け取ることはできる ➤ レスポンス及び内部処理は仕様とは異なる ➤ 認証ヘッダとかガン無視
31.
ファイルアップロードをしてみましょう
Download now