SlideShare uma empresa Scribd logo
1 de 38
REpresentational State Transfer
Agenda
●
簡介 REST
●
Example
Types of Web Services
●
There are mainly two types of web
services.
–
SOAP web services.
–
RESTful web services.
REST 簡介
●
REST 是一種軟體架構風格,全名是
REpresentational State Transfer ,可譯為
表徵狀態轉移。
●
What is RESTful
●
符合 REST Constraint 的系統
–
Client–server
–
Stateless
–
Cacheable
–
Layered system
–
Code on demand (optional)
–
Uniform interface
–
RESTful Web Services
●
又稱 RESTful Web API ,以 HTTP 為基礎
–
所有的 API 或是以 Resource 的形式存在,例
如 htttp://www.example.com/products/12345
–
這個服務可以接受與返回某個 MIME-TYPE ,
最常見的是 JSON 格式,也可以回傳
PNG/JPG/TXT 等格式。
–
對資源的操作會支援各種請求方法 ( 例如
GET, POST, PUT, DELETE)
●
實際案例
●
假設我們系統有個 product 類型的資源。那
麼取得所有的 products :
–
GET http://www.example.com/products
●
●
取得某個 product id 的 product :
–
GET http://www.example.com/products/12345
●
實際案例
●
新增一個 product :
–
POST http://www.example.com/products
–
{
●
{'name': 'foo'}, {'price': 1000}
–
}
●
實際案例
●
更新一個 proudct :
–
PUT http://www.example.com/products/12345
–
{
–
{'inventory': 5}
–
}
JAX-RS
●
Java API for RESTful Web Services
●
Java 對 RESful Web Service 的解決方案
Sample Application
●
假設我們有一個簡單的 hello 的
resource ,他的 URI 可能是:
–
http:///localhost:8080/hello/codedata
●
我們希望輸出是:
–
Hello, codedata
●
Sample Application
●
程式碼可能如下:
–
@Path("/hello")
–
public class HelloRS
–
@GET
–
@Path("/{name}")
–
public String sayHello(@PathParam("name") String name) {
●
return "Hello, " + name;
–
}
–
}
架設可執行 RESTful API 與程式設計環境
●
JAX-RS 的技術跟 Java Web Service ,它只提供了技術標準,可以允許各家廠
商有自己的實作,本次教學用的 Jersey 就是實作之一。
●
可執行 RESTful API 與程式設計的環境需要兩項元素
–
Java Web Service
–
Jersey
●
使用 Java Web Service 需要有以下四個要素
–
(1) JDK 7
–
(2) Eclipse IDE for Java EE Developers
–
(3) Apache Tomcat
–
(4) Axis 2 服務包
安裝 Java Web Service 所需環境
●
安裝 JDK
Step 1. 先 看自己的電腦為查 32 Bit 或 64 Bit ,到
http://www.oracle.com/technetwork/java/javase/downloads/index.html
下載符合自己電腦的 JDK ,我的作業系統是 Win7 X64, 所以我下載的
是 jdk-8u60-windows-x64.exe 。
安裝 Java Web Service 所需環境
Step 2. 下載完後,執行 exe ,進行安裝。檔
Step 3.
到 C:Program FilesJava 找剛剛所安裝的 JDK 版本資料夾,以本範例為
C:Program FilesJavajdk1.7.0_80 。
接著,複製 C:Program FilesJavajdk1.7.0_80bin 路徑。
Step 4.
我的電腦 > 右鍵 容內 > 進階系統設定 > 「進階」頁籤 > 環境變數。
安裝 Java Web Service 所需環境
安裝 Java Web Service 所需環境
Step 5.
系統變數 >Path> 編輯。
Step 6.
在變數 上加上一個「值 ; 」分號後,再
把剛剛
複製的 C:Program
FilesJavajdk1.7.0_80bin 路徑
貼上去。
安裝 Java Web Service 所需環境
Step 7.
看查 JDK 是否安裝與設定成功。開始 > 執行 >CMD> 打開命令
提示字元,輸入 java>Enter 會出現一堆訊息,代表 JDK 已安裝
與設定成功。
安裝 Java Web Service 所需環境
2. 安裝 Eclipse IDE for Java EE Developers
Step 1.
下載 Eclipse IDE for Java EE Developers ,下載前請先確認自己電
腦是 32 Bit 或 64 Bit ,下載位置
https://eclipse.org/downloads/
安裝 Java Web Service 所需環境
3. 安裝 Apache Tomcat
Step 1.
到 http://tomcat.apache.org/download-80.cgi 下載 32-bit/64-bit
Windows Service Installer 。
Step 2.
安裝 Tomcat 8 ,選取所需要安裝的項目。
安裝 Java Web Service 所需環境
Step 3.
設定 HTTP 的 Port :本範例用
預設 8080 ,設定 Tomcat 的帳
號
密碼,按下 Next 。
Step 4.
選擇所下載 jre 的位置,本範例
路徑為
C:Program FilesJavajre7 ,按
下 Next
設定 HTTP 的 Port
JRE 路徑
安裝 Java Web Service 所需環境
Step 5.
選擇 Tomcat 安裝的路徑,
本範例路徑為 D:Program Files
Apache Software Foundation
Tomcat 8.0 ,按下 Install 。
Step 6.
開始 > 所有程式 >
Apache Tomcat 8.0 Tomcat8 >
Configure Tomcat ,按下
Start ,
開 服務。啟
Step 5.
Step 6.
安裝 Java Web Service 所需環境
Step 7.
在瀏覽器上打上 http://localhost:8080,看到以下畫面代表服務安
裝成功。
建立 Dynamic Web Project
Step1. File → New → Dynamic Web Project
建立 Dynamic Web Project
●
web.xml deployment descriptor
AddJersey JARs
●
Copy all JARs from your Jersey download
into the WEB-INF/lib folder.
Hello RESTful
●
Create Class
–
Hello.java
●
Define Jersey Servlet dispatcher
–
web.xml
●
Run your rest service
–
http://localhost:8080/HiRESTful/rest/hello/goo
d
Create a client
●
Create a new Java project
HiRESTfulClient and add the Jersey JARs
to the project and the project build path.
Create the following test class
–
Test.java
RESTful Web Service Cases
●
Amazon AWS
●
Facebook
●
Yahoo Web Service
●
Hadoop API
●
Google Web Service
●
...etc
Contact
●
E-mail: pinglunliao [at] gmail [dot] com
●
LINE: Holan.Liao
References
●
http://www.dsc.com.tw/newspaper/46/46-1.ht
●

Mais conteúdo relacionado

Mais procurados

Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 ServletCh02 撰寫與設定 Servlet
Ch02 撰寫與設定 ServletJustin Lin
 
Servlet & JSP 教學手冊第二版 - 第 5 章:Servlet 進階 API、過濾器與傾聽器
Servlet & JSP 教學手冊第二版 - 第 5 章:Servlet 進階 API、過濾器與傾聽器Servlet & JSP 教學手冊第二版 - 第 5 章:Servlet 進階 API、過濾器與傾聽器
Servlet & JSP 教學手冊第二版 - 第 5 章:Servlet 進階 API、過濾器與傾聽器Justin Lin
 
Servlet & JSP 教學手冊第二版 - 課後練習解答
Servlet & JSP 教學手冊第二版 - 課後練習解答Servlet & JSP 教學手冊第二版 - 課後練習解答
Servlet & JSP 教學手冊第二版 - 課後練習解答Justin Lin
 
Entity framework + Linq 介紹
Entity framework + Linq 介紹Entity framework + Linq 介紹
Entity framework + Linq 介紹Alan Tsai
 
ASP.Net WebAPI經驗分享
ASP.Net WebAPI經驗分享ASP.Net WebAPI經驗分享
ASP.Net WebAPI經驗分享國昭 張
 
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSPServlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSPJustin Lin
 
02.web sphere培训 应用websphere
02.web sphere培训 应用websphere02.web sphere培训 应用websphere
02.web sphere培训 应用webspherelittlecong
 
1号店数据库架构
1号店数据库架构1号店数据库架构
1号店数据库架构Louis liu
 
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityCh13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityJustin Lin
 
Ch08 自訂標籤
Ch08 自訂標籤Ch08 自訂標籤
Ch08 自訂標籤Justin Lin
 
MySQL多机房容灾设计(with Multi-Master)
MySQL多机房容灾设计(with Multi-Master)MySQL多机房容灾设计(with Multi-Master)
MySQL多机房容灾设计(with Multi-Master)Lixun Peng
 
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式Justin Lin
 
Ch09 整合資料庫
Ch09 整合資料庫Ch09 整合資料庫
Ch09 整合資料庫Justin Lin
 
前端框架發展
 前端框架發展 前端框架發展
前端框架發展Chi-wen Sun
 
Ch08 自訂標籤
Ch08 自訂標籤Ch08 自訂標籤
Ch08 自訂標籤Justin Lin
 
Ch03 請求與回應
Ch03 請求與回應Ch03 請求與回應
Ch03 請求與回應Justin Lin
 
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器Justin Lin
 

Mais procurados (20)

Java_08:SQL
Java_08:SQLJava_08:SQL
Java_08:SQL
 
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 ServletCh02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
 
Servlet & JSP 教學手冊第二版 - 第 5 章:Servlet 進階 API、過濾器與傾聽器
Servlet & JSP 教學手冊第二版 - 第 5 章:Servlet 進階 API、過濾器與傾聽器Servlet & JSP 教學手冊第二版 - 第 5 章:Servlet 進階 API、過濾器與傾聽器
Servlet & JSP 教學手冊第二版 - 第 5 章:Servlet 進階 API、過濾器與傾聽器
 
Servlet & JSP 教學手冊第二版 - 課後練習解答
Servlet & JSP 教學手冊第二版 - 課後練習解答Servlet & JSP 教學手冊第二版 - 課後練習解答
Servlet & JSP 教學手冊第二版 - 課後練習解答
 
Entity framework + Linq 介紹
Entity framework + Linq 介紹Entity framework + Linq 介紹
Entity framework + Linq 介紹
 
ASP.Net WebAPI經驗分享
ASP.Net WebAPI經驗分享ASP.Net WebAPI經驗分享
ASP.Net WebAPI經驗分享
 
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSPServlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP
 
02.web sphere培训 应用websphere
02.web sphere培训 应用websphere02.web sphere培训 应用websphere
02.web sphere培训 应用websphere
 
1号店数据库架构
1号店数据库架构1号店数据库架构
1号店数据库架构
 
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityCh13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
 
Ch08 自訂標籤
Ch08 自訂標籤Ch08 自訂標籤
Ch08 自訂標籤
 
MySQL多机房容灾设计(with Multi-Master)
MySQL多机房容灾设计(with Multi-Master)MySQL多机房容灾设计(with Multi-Master)
MySQL多机房容灾设计(with Multi-Master)
 
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
 
Ch09 整合資料庫
Ch09 整合資料庫Ch09 整合資料庫
Ch09 整合資料庫
 
前端框架發展
 前端框架發展 前端框架發展
前端框架發展
 
Asp.net core v1.0
Asp.net core v1.0Asp.net core v1.0
Asp.net core v1.0
 
Route路由控制
Route路由控制Route路由控制
Route路由控制
 
Ch08 自訂標籤
Ch08 自訂標籤Ch08 自訂標籤
Ch08 自訂標籤
 
Ch03 請求與回應
Ch03 請求與回應Ch03 請求與回應
Ch03 請求與回應
 
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
 

Semelhante a RESTful

构建基于Lamp的中型网站架构
构建基于Lamp的中型网站架构构建基于Lamp的中型网站架构
构建基于Lamp的中型网站架构HonestQiao
 
用JAX-RS和Jersey完成RESTful Web Services
用JAX-RS和Jersey完成RESTful Web Services用JAX-RS和Jersey完成RESTful Web Services
用JAX-RS和Jersey完成RESTful Web Servicesjavatwo2011
 
使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统Frank Xu
 
如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统melity78
 
移动端跨平台技术原理
移动端跨平台技术原理移动端跨平台技术原理
移动端跨平台技术原理gorillazf
 
ASP.NET Core 2.1設計新思維與新發展
ASP.NET  Core 2.1設計新思維與新發展ASP.NET  Core 2.1設計新思維與新發展
ASP.NET Core 2.1設計新思維與新發展江華 奚
 
P6 服务器安装与配置
P6 服务器安装与配置P6 服务器安装与配置
P6 服务器安装与配置epst
 
test
testtest
testxieyq
 
PHP & AppServ
PHP & AppServPHP & AppServ
PHP & AppServHt Wang
 
Huangjing renren
Huangjing renrenHuangjing renren
Huangjing renrend0nn9n
 
ASP.Net MVC2 简介
ASP.Net MVC2 简介ASP.Net MVC2 简介
ASP.Net MVC2 简介Allen Lsy
 
Struts快速学习指南
Struts快速学习指南Struts快速学习指南
Struts快速学习指南yiditushe
 
Java 1(Java概述)
Java 1(Java概述)Java 1(Java概述)
Java 1(Java概述)xzdbd
 
2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swt2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swttka
 
构建基于Lamp的网站架构
构建基于Lamp的网站架构构建基于Lamp的网站架构
构建基于Lamp的网站架构Cosey Lee
 
4. Go 工程化实践-0124-v2.pdf
4. Go 工程化实践-0124-v2.pdf4. Go 工程化实践-0124-v2.pdf
4. Go 工程化实践-0124-v2.pdfssuserd6c7621
 
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式Shengyou Fan
 
Appserv setup
Appserv setupAppserv setup
Appserv setupHt Wang
 
基于Ivy ant的java构建初探
基于Ivy ant的java构建初探基于Ivy ant的java构建初探
基于Ivy ant的java构建初探Anson Yang
 

Semelhante a RESTful (20)

构建基于Lamp的中型网站架构
构建基于Lamp的中型网站架构构建基于Lamp的中型网站架构
构建基于Lamp的中型网站架构
 
用JAX-RS和Jersey完成RESTful Web Services
用JAX-RS和Jersey完成RESTful Web Services用JAX-RS和Jersey完成RESTful Web Services
用JAX-RS和Jersey完成RESTful Web Services
 
使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统
 
如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统
 
移动端跨平台技术原理
移动端跨平台技术原理移动端跨平台技术原理
移动端跨平台技术原理
 
ASP.NET Core 2.1設計新思維與新發展
ASP.NET  Core 2.1設計新思維與新發展ASP.NET  Core 2.1設計新思維與新發展
ASP.NET Core 2.1設計新思維與新發展
 
Jsp
JspJsp
Jsp
 
P6 服务器安装与配置
P6 服务器安装与配置P6 服务器安装与配置
P6 服务器安装与配置
 
test
testtest
test
 
PHP & AppServ
PHP & AppServPHP & AppServ
PHP & AppServ
 
Huangjing renren
Huangjing renrenHuangjing renren
Huangjing renren
 
ASP.Net MVC2 简介
ASP.Net MVC2 简介ASP.Net MVC2 简介
ASP.Net MVC2 简介
 
Struts快速学习指南
Struts快速学习指南Struts快速学习指南
Struts快速学习指南
 
Java 1(Java概述)
Java 1(Java概述)Java 1(Java概述)
Java 1(Java概述)
 
2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swt2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swt
 
构建基于Lamp的网站架构
构建基于Lamp的网站架构构建基于Lamp的网站架构
构建基于Lamp的网站架构
 
4. Go 工程化实践-0124-v2.pdf
4. Go 工程化实践-0124-v2.pdf4. Go 工程化实践-0124-v2.pdf
4. Go 工程化实践-0124-v2.pdf
 
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
 
Appserv setup
Appserv setupAppserv setup
Appserv setup
 
基于Ivy ant的java构建初探
基于Ivy ant的java构建初探基于Ivy ant的java构建初探
基于Ivy ant的java构建初探
 

Mais de PingLun Liao

深入探討 C 語言
深入探討 C 語言深入探討 C 語言
深入探討 C 語言PingLun Liao
 
Git 程式碼版本控制軟體介紹
Git 程式碼版本控制軟體介紹Git 程式碼版本控制軟體介紹
Git 程式碼版本控制軟體介紹PingLun Liao
 
給沒有程式設計經驗的人
給沒有程式設計經驗的人給沒有程式設計經驗的人
給沒有程式設計經驗的人PingLun Liao
 
Perl For Bioinformatics
Perl For BioinformaticsPerl For Bioinformatics
Perl For BioinformaticsPingLun Liao
 
C 檔案輸入與輸出
C 檔案輸入與輸出C 檔案輸入與輸出
C 檔案輸入與輸出PingLun Liao
 
Win32 視窗程式設計基礎
Win32 視窗程式設計基礎Win32 視窗程式設計基礎
Win32 視窗程式設計基礎PingLun Liao
 
Matlab 在機率與統計的應用
Matlab 在機率與統計的應用Matlab 在機率與統計的應用
Matlab 在機率與統計的應用PingLun Liao
 
Android 2D 遊戲設計基礎
Android 2D 遊戲設計基礎Android 2D 遊戲設計基礎
Android 2D 遊戲設計基礎PingLun Liao
 
Android 介面設計
Android 介面設計Android 介面設計
Android 介面設計PingLun Liao
 
Java 視窗程式設計
Java 視窗程式設計Java 視窗程式設計
Java 視窗程式設計PingLun Liao
 
Android introduction
Android introductionAndroid introduction
Android introductionPingLun Liao
 
Generic Programming
Generic ProgrammingGeneric Programming
Generic ProgrammingPingLun Liao
 
Object-Oriented Programming
Object-Oriented ProgrammingObject-Oriented Programming
Object-Oriented ProgrammingPingLun Liao
 
Object-Based Programming Part II
Object-Based Programming Part IIObject-Based Programming Part II
Object-Based Programming Part IIPingLun Liao
 

Mais de PingLun Liao (20)

深入探討 C 語言
深入探討 C 語言深入探討 C 語言
深入探討 C 語言
 
Git 程式碼版本控制軟體介紹
Git 程式碼版本控制軟體介紹Git 程式碼版本控制軟體介紹
Git 程式碼版本控制軟體介紹
 
給沒有程式設計經驗的人
給沒有程式設計經驗的人給沒有程式設計經驗的人
給沒有程式設計經驗的人
 
陣列與指標
陣列與指標陣列與指標
陣列與指標
 
Perl For Bioinformatics
Perl For BioinformaticsPerl For Bioinformatics
Perl For Bioinformatics
 
C++ STL 概觀
C++ STL 概觀C++ STL 概觀
C++ STL 概觀
 
C++ Function
C++ FunctionC++ Function
C++ Function
 
C 檔案輸入與輸出
C 檔案輸入與輸出C 檔案輸入與輸出
C 檔案輸入與輸出
 
Win32 視窗程式設計基礎
Win32 視窗程式設計基礎Win32 視窗程式設計基礎
Win32 視窗程式設計基礎
 
Matlab 在機率與統計的應用
Matlab 在機率與統計的應用Matlab 在機率與統計的應用
Matlab 在機率與統計的應用
 
Android 2D 遊戲設計基礎
Android 2D 遊戲設計基礎Android 2D 遊戲設計基礎
Android 2D 遊戲設計基礎
 
Android 介面設計
Android 介面設計Android 介面設計
Android 介面設計
 
Java 視窗程式設計
Java 視窗程式設計Java 視窗程式設計
Java 視窗程式設計
 
Java 網路程式
Java 網路程式Java 網路程式
Java 網路程式
 
Android introduction
Android introductionAndroid introduction
Android introduction
 
Web service
Web serviceWeb service
Web service
 
How toprogram
How toprogramHow toprogram
How toprogram
 
Generic Programming
Generic ProgrammingGeneric Programming
Generic Programming
 
Object-Oriented Programming
Object-Oriented ProgrammingObject-Oriented Programming
Object-Oriented Programming
 
Object-Based Programming Part II
Object-Based Programming Part IIObject-Based Programming Part II
Object-Based Programming Part II
 

RESTful

  • 3. Types of Web Services ● There are mainly two types of web services. – SOAP web services. – RESTful web services.
  • 4. REST 簡介 ● REST 是一種軟體架構風格,全名是 REpresentational State Transfer ,可譯為 表徵狀態轉移。 ●
  • 5. What is RESTful ● 符合 REST Constraint 的系統 – Client–server – Stateless – Cacheable – Layered system – Code on demand (optional) – Uniform interface –
  • 6. RESTful Web Services ● 又稱 RESTful Web API ,以 HTTP 為基礎 – 所有的 API 或是以 Resource 的形式存在,例 如 htttp://www.example.com/products/12345 – 這個服務可以接受與返回某個 MIME-TYPE , 最常見的是 JSON 格式,也可以回傳 PNG/JPG/TXT 等格式。 – 對資源的操作會支援各種請求方法 ( 例如 GET, POST, PUT, DELETE) ●
  • 7. 實際案例 ● 假設我們系統有個 product 類型的資源。那 麼取得所有的 products : – GET http://www.example.com/products ● ● 取得某個 product id 的 product : – GET http://www.example.com/products/12345 ●
  • 8. 實際案例 ● 新增一個 product : – POST http://www.example.com/products – { ● {'name': 'foo'}, {'price': 1000} – } ●
  • 9. 實際案例 ● 更新一個 proudct : – PUT http://www.example.com/products/12345 – { – {'inventory': 5} – }
  • 10. JAX-RS ● Java API for RESTful Web Services ● Java 對 RESful Web Service 的解決方案
  • 11. Sample Application ● 假設我們有一個簡單的 hello 的 resource ,他的 URI 可能是: – http:///localhost:8080/hello/codedata ● 我們希望輸出是: – Hello, codedata ●
  • 12. Sample Application ● 程式碼可能如下: – @Path("/hello") – public class HelloRS – @GET – @Path("/{name}") – public String sayHello(@PathParam("name") String name) { ● return "Hello, " + name; – } – }
  • 13. 架設可執行 RESTful API 與程式設計環境 ● JAX-RS 的技術跟 Java Web Service ,它只提供了技術標準,可以允許各家廠 商有自己的實作,本次教學用的 Jersey 就是實作之一。 ● 可執行 RESTful API 與程式設計的環境需要兩項元素 – Java Web Service – Jersey ● 使用 Java Web Service 需要有以下四個要素 – (1) JDK 7 – (2) Eclipse IDE for Java EE Developers – (3) Apache Tomcat – (4) Axis 2 服務包
  • 14. 安裝 Java Web Service 所需環境 ● 安裝 JDK Step 1. 先 看自己的電腦為查 32 Bit 或 64 Bit ,到 http://www.oracle.com/technetwork/java/javase/downloads/index.html 下載符合自己電腦的 JDK ,我的作業系統是 Win7 X64, 所以我下載的 是 jdk-8u60-windows-x64.exe 。
  • 15. 安裝 Java Web Service 所需環境 Step 2. 下載完後,執行 exe ,進行安裝。檔 Step 3. 到 C:Program FilesJava 找剛剛所安裝的 JDK 版本資料夾,以本範例為 C:Program FilesJavajdk1.7.0_80 。 接著,複製 C:Program FilesJavajdk1.7.0_80bin 路徑。 Step 4. 我的電腦 > 右鍵 容內 > 進階系統設定 > 「進階」頁籤 > 環境變數。
  • 16. 安裝 Java Web Service 所需環境
  • 17. 安裝 Java Web Service 所需環境 Step 5. 系統變數 >Path> 編輯。 Step 6. 在變數 上加上一個「值 ; 」分號後,再 把剛剛 複製的 C:Program FilesJavajdk1.7.0_80bin 路徑 貼上去。
  • 18. 安裝 Java Web Service 所需環境 Step 7. 看查 JDK 是否安裝與設定成功。開始 > 執行 >CMD> 打開命令 提示字元,輸入 java>Enter 會出現一堆訊息,代表 JDK 已安裝 與設定成功。
  • 19. 安裝 Java Web Service 所需環境 2. 安裝 Eclipse IDE for Java EE Developers Step 1. 下載 Eclipse IDE for Java EE Developers ,下載前請先確認自己電 腦是 32 Bit 或 64 Bit ,下載位置 https://eclipse.org/downloads/
  • 20. 安裝 Java Web Service 所需環境 3. 安裝 Apache Tomcat Step 1. 到 http://tomcat.apache.org/download-80.cgi 下載 32-bit/64-bit Windows Service Installer 。 Step 2. 安裝 Tomcat 8 ,選取所需要安裝的項目。
  • 21. 安裝 Java Web Service 所需環境 Step 3. 設定 HTTP 的 Port :本範例用 預設 8080 ,設定 Tomcat 的帳 號 密碼,按下 Next 。 Step 4. 選擇所下載 jre 的位置,本範例 路徑為 C:Program FilesJavajre7 ,按 下 Next
  • 24. 安裝 Java Web Service 所需環境 Step 5. 選擇 Tomcat 安裝的路徑, 本範例路徑為 D:Program Files Apache Software Foundation Tomcat 8.0 ,按下 Install 。 Step 6. 開始 > 所有程式 > Apache Tomcat 8.0 Tomcat8 > Configure Tomcat ,按下 Start , 開 服務。啟
  • 27. 安裝 Java Web Service 所需環境 Step 7. 在瀏覽器上打上 http://localhost:8080,看到以下畫面代表服務安 裝成功。
  • 28. 建立 Dynamic Web Project Step1. File → New → Dynamic Web Project
  • 29. 建立 Dynamic Web Project ● web.xml deployment descriptor
  • 30. AddJersey JARs ● Copy all JARs from your Jersey download into the WEB-INF/lib folder.
  • 31.
  • 32. Hello RESTful ● Create Class – Hello.java ● Define Jersey Servlet dispatcher – web.xml ● Run your rest service – http://localhost:8080/HiRESTful/rest/hello/goo d
  • 33.
  • 34. Create a client ● Create a new Java project HiRESTfulClient and add the Jersey JARs to the project and the project build path. Create the following test class – Test.java
  • 35.
  • 36. RESTful Web Service Cases ● Amazon AWS ● Facebook ● Yahoo Web Service ● Hadoop API ● Google Web Service ● ...etc
  • 37. Contact ● E-mail: pinglunliao [at] gmail [dot] com ● LINE: Holan.Liao