SlideShare uma empresa Scribd logo
1 de 14
Baixar para ler offline
共通性應用程式介面規範
國家發展委員會
中華民國 106 年 6 月
目  錄
壹、目的.........................................................................................1
貳、應用範圍.................................................................................1
參、名詞定義.................................................................................1
肆、規範準則.................................................................................3
一、符合 OAS 標準之 API 說明文件.....................................................3
(一)OAS 標準設計重點............................................................................................3
(二)OAS 標準驗證方式............................................................................................4
二、RESTful API 語法規則....................................................................5
三、API 版本描述方式...........................................................................6
四、API Discovery...................................................................................6
附錄.................................................................................................7
附錄 1-OpenAPI Specification 實際案例解析......................................7
附錄 2-OpenAPI Specification 中文摘要譯本....................................12
壹、目的
原 104 年 7 月頒訂「共通性資料存取應用程式介面規範」目的為提供
各資料開放平臺使用者以一致性應用程式介面 ( Application Programming
Interface, 以下簡稱 API )取得資料。以 RESTful 風格為主要基礎,訂定應
用程式介面的呼叫方式、語法規則及所提供的介面類型等項目,以達自動
資料介接目標。
為擴大政府資訊服務效益,並保有各系統 API 開發彈性,爰導入國際
Open API Initiative 組織之 OpenAPI Specification (以下簡稱 OAS) 標準,藉
由一致性之描述方法,提供機器可讀之標準格式 API 說明文件,以大幅降
低資料存取、API 調整以及維護等門檻,進而提升政府資訊效能。
貳、應用範圍
本規範適用於可資料讀取/寫入之應用程式介面(API),為使 API 具有
共通性之特性,各機關採 API 對外提供服務或其傳輸資料內容不涉及機敏
性之 API,請提供符合 OAS 標準之說明文件。不論該 API 所使用之授權及
存取限制,均可採 OAS 標準進行描述。
參、名詞定義
英文名稱 中文名稱 定義
API
(Application Programming
Interface)
應用程式介面 為「『電腦作業系統
(Operating system)』或
『程式函式庫』提供給應
用程式呼叫使用的程式碼
」。其主要目的是讓應用
程式開發人員得以呼叫一
組常式功能,而無須考慮
其底層的原始碼為何、或
理解其內部工作機制的細
節。API 本身是抽象的,它
1
僅定義了一個介面,而不
涉及應用程式在實際實現
過程中的具體操作。
REST 含狀態傳輸 全名為 Representational
State Transfer,是一種軟體
架構設計風格。資源由 URI
指定,對資源的操作包括
取得、創建、修改和刪除
資源,這些操作正好對應
HTTP 協議提供之
GET、POST、PUT 和
DELETE 方法。
RESTful 含狀態傳輸的 Web 服務 是一個使用 HTTP 並遵循
REST 原則,以 URL 定位
資源,根據 HTTP 內容指
示操作動作與回應訊息。
JSON - 一種常見的輕量級資料交
換格式
YAML - 一個可讀性高,用來表達
資料序列的格式
SRU (Service Root URL) 服務根網址 描述平臺上提供各類別應
用服務之網址。
Resource Path 資源路徑 接續於服務根網址後,指
定某一資料集之資料資源
路徑
Query Options 查詢選項 接續於資源路徑後,針對
某一應用服務指定某一資
料集之資源項目,表達所
欲取得資料的範圍或查詢
的條件
Metadata 詮釋資料 描述資料的資料
M2M (Machine to Machine) 機器與機器間資料交換 機器中的應用系統,已設
定好定期呼叫機制與呼叫
API 方式,定期透過網際網
路直接呼叫資料開放平臺
提供之 API,以系統介接自
動取得特定資料。
2
肆、規範準則
本規範之 API 設計主要依循共通性、輕便性及標準化準則。
● 共通性:參採 Open API Initiative 組織之 OpenAPI Specification 標準,
作為 API 說明文件之一致標準。
● 輕便性:參考現階段及未來趨勢之 API 呼叫方式,採用 RESTful 風格
API。
● 標準化:參考國際通用 W3C 相關標準(如 URI、HTTP 等)及 OData.org
相關規範訂定之。
一、符合 OAS 標準之 API 說明文件
為實現共通性應用程式介面,API 開發應提供符合 OAS 標準1
之一致
性描述方法,提供機器可讀之標準格式 API 說明文件。
提供 OAS 實際案例解析如附錄 1,並提供 OAS 標準之中文摘要譯本
如附錄 2 供參。
(一)OAS 標準設計重點
● 符合 OAS 標準之 API 說明文件(以下簡稱 OAS 文件)原則上由單一檔
案製成。
● OAS 文件需以 JSON 或 YAML 檔案格式呈現(API 本身的輸入和回
傳值以及其他內容格式則未限制),並建議將 API 說明文件命名為
openapi.json 或 openapi.yaml。
● OAS 文件之基本資料類型是依據 JSON Schema Specification Wright
Draft 00 支援的類型訂定。其架構基於根物件 OpenAPI Object 展開,
物件具備各自的固定欄位(Fixed Fields),各欄位之類型(Type)則須符
合基本類別或物件定義。
以下摘要 OpenAPI Object 之固定欄位說明如下:
1 OAI 官方正式發布 OAS 版本:https://github.com/OAI/OpenAPI-Specification/tree/master/versions
3
欄位名稱
Field Name
類型
Type
描述
Description
openapi string
必填,這字串必須載明該文件所使用的 OpenAPI
Specification 版本。這個 openapi 欄位應該要讓使
用者可藉由工具直譯其版本。該欄位與 API info 版本
號無關。
info Info Object
必填,提供這份 API 的詮釋資料。如有需要,這詮釋
資料亦可由使用者所使用。
servers
[Server
Object]
伺服器物件,可提供至目標伺服器之連結資訊。若未
提供該欄位,或為空陣列,則伺服器欄位之預設 URL
將會是根目錄"/"。
paths Paths Object 必填,記載這份 API 的功能操作及可用路徑。
components
Components
Object
用於記載保存於各種 schema 之元素。
security
[Security
Requirement
Object]
宣告其可跨用於整份 API 之安全機制。其清單內包含
可供使用的 security requirement objects。僅需有一項
security requirement objects 滿足授權需求即可。可藉
由個別操作覆蓋此定義。
tags [Tag Object]
本標準於附加詮釋資料所使用的標籤清單。標籤順序
可被分析工具所解析。並非所有 Operation Object 所使
用的標籤都必須被宣告,未被宣告之標籤可被隨機地
或邏輯性地組織起來。清單中每個標籤名稱都必得是
獨一無二的。
(二)OAS 標準驗證方式
API 開發人員可透過 Open API Initiative 所提供之官方驗證工具2
,對
OAS 文件內容進行檢測,若檢測結果無錯誤訊息且其顯示內容符合機關之
專案需求,可視為通過驗證。
2 OAI 提供之第三方驗證器,其驗證結果僅供參考: https://github.com/OAI/OpenAPI-
Specification/blob/OpenAPI.next/IMPLEMENTATIONS.md
4
二、RESTful API 語法規則
以政府資料開放平臺(data.gov.tw)為例,規劃 REST Web API,讓資
料使用者可以 HTTP GET 方式,取得政府資料開放平臺之資料,API 呼叫
回傳內容格式則以 JSON 為主,若 API 輸出內容格式為 JSON,則 HTTP
header Content-Type 為 application/json。
服務路徑 URL 分為服務根網址(Service Root URL,簡稱 SRU)、資源
路徑(Resource Path)和查詢選項(Query Options):
● 服務根網址:平臺上提供該類別應用服務之網址。
● 資源路徑:接續於 SRU 後,以指定某一資源項目路徑名稱。
● 查詢選項:接續於資源路徑後,針對某一應用服務,指定所欲取得資
料之範圍或查詢之條件。
圖-1 URL 結構
依照上述 URL 結構定義,下圖以取得一資料集之資料資源內容 URL
為例。
http://data.gov.tw/api/
__________________/
|
service root URL
http://data.gov.tw/api/rest/datastore/355000000I-000003-001?limit=20&sort=County
__________________/ ________________________________/ __________________/
| | |
service root URL resource path query options
圖-2 URL 結構範例說明
5
三、API 版本描述方式
因 API 規格或實作可能有版本之演進,故如有需要描述版本資訊應於
服務根網址(Service Root URL)說明,如下圖。版本資訊格式建議使用
v1、v2、v3,不建議使用 v-1.1、v1.2、1.3。
http://data.gov.tw/api/v1/rest/datastore/355000000I-000003-001?limit=20&sort=County
____________________/ ________________________________/ __________________/
| | |
service root URL resource path query options
圖-3 含有版本資訊 URL 結構範例說明
四、API Discovery
如機關所提供之 API 可供外界所查詢,建議可於首頁 html 文件或者是
首頁的 Web 服務的 header 加入 API 鏈接關係,例如:
<link rel =“api”type =“application / apis + json”href =“https://example.com/apis.json”/>
APIs.json 並非 OAS 標準的一部份,而是一個機器可讀的 sitemap 概念
,可將該網站所有使用到的 API 進行列示。
6
附錄
附錄 1-OpenAPI Specification 實際案例解析
(一)JSON 格式-以「交通部公共運輸整合資訊流通服務平臺」為例
該規範已建立符合 Swagger (OAS 2.0)規範之 JSON 格式說明文件 (網路
位址:http://ptx.transportdata.tw/MOTC/API/Main/docs/v2 ),以下提供已
轉換至 OAS3 之 JSON 與 YAML 格式比對摘要:
● OpenAPI 欄位:版本描述。
JSON 格式 YAML 格式
{
"openapi": "3.0.0-rc2",
openapi: 3.0.0-rc2
● server 欄位:路徑描述。
JSON 格式 YAML 格式
"servers": [
{
"url":
"http://ptx.transportdata.tw/MOTC"
}
],
servers:
- url: http://ptx.transportdata.tw/MOTC
● info 欄位:該 API 之基本詮釋資料。
JSON 格式 YAML 格式
"info": {
"version": "v2",
"title": "MOTC Transport API V2",
"description": "</div>n <div
class="info_description markdown">資
料服務開發實作參考手冊:<a href=
http://ptx.transportdata.tw/ptx/Downloa
d/公共運輸整合資訊平台資料服務開發實作.pdf >
請點我</a><br>公車動態使用注意事項:<a href=
http://ptx.transportdata.tw/ptx/Downloa
d/交通部公共運輸整合資訊流通服務_公車動態預估
到站 N1 資料使用注意事項.pptx >請點我
</a><br>資料服務使用注意事項:<a href=
http://ptx.transportdata.tw/ptx/Downloa
d/資料服務使用注意事項(Readme)-v1.pdf >請點
info:
version: v2
title: MOTC Transport API V2
description: |-
</div>
<div class="info_description
markdown">資料服務開發實作參考手冊:<a href=
http://ptx.transportdata.tw/ptx/Downloa
d/公共運輸整合資訊平台資料服務開發實作.pdf >
請點我</a><br>公車動態使用注意事項:<a href=
http://ptx.transportdata.tw/ptx/Downloa
d/交通部公共運輸整合資訊流通服務_公車動態預估
到站 N1 資料使用注意事項.pptx >請點我
</a><br>資料服務使用注意事項:<a href=
http://ptx.transportdata.tw/ptx/Downloa
7
我</a><br>API URI Convention 文件說明:<a
href=
http://ptx.transportdata.tw/ptx/Downloa
d/API_URI_Convention 文件_v1.pdf >請點我<
/a>"
},
d/資料服務使用注意事項(Readme)-v1.pdf >請點
我</a><br>API URI Convention 文件說明:<a
href=
http://ptx.transportdata.tw/ptx/Downloa
d/API_URI_Convention 文件_v1.pdf >請點我<
/a>
● paths 欄位:該 API 各項功能之呼叫路徑,可與 server 欄位中的路徑結合
為完整網址,並提供該項 API 之各項欄位、類別定義,以及範例說明。
(本案例僅摘要「取得指定[縣市]的公車動態定時資料(A1)」功能)
JSON 格式 YAML 格式
"paths": {
"/v2/Bus/RealTimeByFrequency/City/{City}":
{
"get": {
"tags": [
"CityBusApi"
],
"summary": "取得指定[縣市]的公車動態定時資
料(A1)",
"description": "市區公車之定時資料(A1)",
"operationId":
"CityBusApi_RealTimeByFrequency",
"parameters": [
{
"name": "City",
"in": "path",
"description": "欲查詢縣市",
"required": true,
"schema": {
"type": "string",
"enum": [
{
"Text": "臺北市",
"Value": "Taipei"
},
{
"Text": "新北市",
"Value": "NewTaipei"
},
{
"Text": "桃園市",
"Value": "Taoyuan"
},
{
"Text": "臺中市",
"Value": "Taichung"
},
{
"Text": "臺南市",
"Value": "Tainan"
},
{
"Text": "高雄市",
paths:
'/v2/Bus/RealTimeByFrequency/City/
{City}':
get:
tags:
- CityBusApi
summary: '取得指定[縣市]的公車動態定時
資料(A1)'
description: 市區公車之定時資料(A1)
operationId:
CityBusApi_RealTimeByFrequency
parameters:
- name: City
in: path
description: 欲查詢縣市
required: true
schema:
type: string
enum:
- Text: 臺北市
Value: Taipei
- Text: 新北市
Value: NewTaipei
- Text: 桃園市
Value: Taoyuan
- Text: 臺中市
Value: Taichung
- Text: 臺南市
Value: Tainan
- Text: 高雄市
Value: Kaohsiung
- Text: 基隆市
Value: Keelung
- Text: 新竹市
Value: Hsinchu
- Text: 新竹縣
Value: HsinchuCounty
- Text: 苗栗縣
Value: MiaoliCounty
- Text: 彰化縣
Value: ChanghuaCounty
- Text: 南投縣
Value: NantouCounty
8
"Value": "Kaohsiung"
},
{
"Text": "基隆市",
"Value": "Keelung"
},
{
"Text": "新竹市",
"Value": "Hsinchu"
},
{
"Text": "新竹縣",
"Value": "HsinchuCounty"
},
{
"Text": "苗栗縣",
"Value": "MiaoliCounty"
},
{
"Text": "彰化縣",
"Value": "ChanghuaCounty"
},
{
"Text": "南投縣",
"Value": "NantouCounty"
},
{
"Text": "雲林縣",
"Value": "YunlinCounty"
},
{
"Text": "嘉義縣",
"Value": "ChiayiCounty"
},
{
"Text": "嘉義市",
"Value": "Chiayi"
},
{
"Text": "屏東縣",
"Value": "PingtungCounty"
},
{
"Text": "宜蘭縣",
"Value": "YilanCounty"
},
{
"Text": "花蓮縣",
"Value": "HualienCounty"
},
{
"Text": "臺東縣",
"Value": "TaitungCounty"
},
{
"Text": "金門縣",
"Value": "KinmenCounty"
},
{
- Text: 雲林縣
Value: YunlinCounty
- Text: 嘉義縣
Value: ChiayiCounty
- Text: 嘉義市
Value: Chiayi
- Text: 屏東縣
Value: PingtungCounty
- Text: 宜蘭縣
Value: YilanCounty
- Text: 花蓮縣
Value: HualienCounty
- Text: 臺東縣
Value: TaitungCounty
- Text: 金門縣
Value: KinmenCounty
- Text: 澎湖縣
Value: PenghuCounty
- Text: 連江縣
Value: LienchiangCounty
- Text: 新北市(雙北雲)
Value: TaipeiCloud
- name: ticket
in: query
description: 可透過
Account/Login API 取得,預設為 guest 的
ticket
required: false
schema:
type: string
- name: $select
in: query
description: 挑選
schema:
type: string
- name: $filter
in: query
description: 過濾
schema:
type: string
- name: $orderby
in: query
description: 排序
schema:
type: string
- name: $top
in: query
description: 取前幾筆
schema:
type: string
default: 30
- name: $skip
in: query
description: 跳過前幾筆
schema:
type: string
- name: $format
in: query
description: 指定來源格式
9
"Text": "澎湖縣",
"Value": "PenghuCounty"
},
{
"Text": "連江縣",
"Value":
"LienchiangCounty"
},
{
"Text": "新北市(雙北雲)",
"Value": "TaipeiCloud"
}
]
}
},
{
"name": "ticket",
"in": "query",
"description": "可透過
Account/Login API 取得,預設為 guest 的 ticket",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "$select",
"in": "query",
"description": "挑選",
"schema": {
"type": "string"
}
},
{
"name": "$filter",
"in": "query",
"description": "過濾",
"schema": {
"type": "string"
}
},
{
"name": "$orderby",
"in": "query",
"description": "排序",
"schema": {
"type": "string"
}
},
{
"name": "$top",
"in": "query",
"description": "取前幾筆",
"schema": {
"type": "string",
"default": 30
}
},
{
required: true
schema:
type: string
enum:
- Text: JSON
Value: JSON
- Text: XML
Value: XML
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref:
'#/components/schemas/'
text/json:
schema:
type: array
items:
$ref:
'#/components/schemas/'
deprecated: false
10
"name": "$skip",
"in": "query",
"description": "跳過前幾筆",
"schema": {
"type": "string"
}
},
{
"name": "$format",
"in": "query",
"description": "指定來源格式",
"required": true,
"schema": {
"type": "string",
"enum": [
{
"Text": "JSON",
"Value": "JSON"
},
{
"Text": "XML",
"Value": "XML"
}
]
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref":
"#/components/schemas/"
}
}
},
"text/json": {
"schema": {
"type": "array",
"items": {
"$ref":
"#/components/schemas/"
}
}
}
}
}
},
"deprecated": false
}
},
11
附錄 2-OpenAPI Specification 中文摘要譯本
12

Mais conteúdo relacionado

Semelhante a 共通性應用程式介面規範

OpenChain spec 2.0 繁體中文
OpenChain spec 2.0 繁體中文OpenChain spec 2.0 繁體中文
OpenChain spec 2.0 繁體中文SZ Lin
 
Android应用开发 - 沈大海
Android应用开发 - 沈大海Android应用开发 - 沈大海
Android应用开发 - 沈大海Shaoning Pan
 
Struts学习笔记
Struts学习笔记Struts学习笔记
Struts学习笔记yiditushe
 
SAM5业务流程梳理建模手册
SAM5业务流程梳理建模手册SAM5业务流程梳理建模手册
SAM5业务流程梳理建模手册BPC流程社区
 
Introduction to ngn sce
Introduction to ngn sceIntroduction to ngn sce
Introduction to ngn scegdems
 
C/C++调试、跟踪及性能分析工具综述
C/C++调试、跟踪及性能分析工具综述C/C++调试、跟踪及性能分析工具综述
C/C++调试、跟踪及性能分析工具综述Xiaozhe Wang
 
Accel_Series_2023Autumn_Zh.pptx
Accel_Series_2023Autumn_Zh.pptxAccel_Series_2023Autumn_Zh.pptx
Accel_Series_2023Autumn_Zh.pptxNTTDATA INTRAMART
 
ASP.NET Core 2.1設計新思維與新發展
ASP.NET  Core 2.1設計新思維與新發展ASP.NET  Core 2.1設計新思維與新發展
ASP.NET Core 2.1設計新思維與新發展江華 奚
 
Spring 2.x 中文
Spring 2.x 中文Spring 2.x 中文
Spring 2.x 中文Guo Albert
 
API Survey #2 - Firebase realtime database
API Survey #2 - Firebase realtime databaseAPI Survey #2 - Firebase realtime database
API Survey #2 - Firebase realtime databaseSzuping Wang
 
Android开发概览
Android开发概览Android开发概览
Android开发概览heyfluke
 
ASP.NET Core MVC 2.2從開發到測試 - Development & Unit Testing
ASP.NET Core MVC 2.2從開發到測試 - Development & Unit TestingASP.NET Core MVC 2.2從開發到測試 - Development & Unit Testing
ASP.NET Core MVC 2.2從開發到測試 - Development & Unit Testing江華 奚
 
I pv6資通設備與軟體規範建議書
I pv6資通設備與軟體規範建議書I pv6資通設備與軟體規範建議書
I pv6資通設備與軟體規範建議書煥文 陳
 
Cas Sso Intro
Cas Sso IntroCas Sso Intro
Cas Sso IntroShiny Zhu
 
通行证项目技术分享
通行证项目技术分享通行证项目技术分享
通行证项目技术分享Tony Deng
 
通用即时到帐接口集成教程 Php版本
通用即时到帐接口集成教程 Php版本通用即时到帐接口集成教程 Php版本
通用即时到帐接口集成教程 Php版本abdul_manashi
 
通用即时到帐接口集成教程 Php版本
通用即时到帐接口集成教程 Php版本通用即时到帐接口集成教程 Php版本
通用即时到帐接口集成教程 Php版本abdul_manashi
 
开放源代码软件Media wiki成熟度评估
开放源代码软件Media wiki成熟度评估开放源代码软件Media wiki成熟度评估
开放源代码软件Media wiki成熟度评估YUCHENG HU
 

Semelhante a 共通性應用程式介面規範 (20)

OpenChain spec 2.0 繁體中文
OpenChain spec 2.0 繁體中文OpenChain spec 2.0 繁體中文
OpenChain spec 2.0 繁體中文
 
Android应用开发 - 沈大海
Android应用开发 - 沈大海Android应用开发 - 沈大海
Android应用开发 - 沈大海
 
Struts学习笔记
Struts学习笔记Struts学习笔记
Struts学习笔记
 
SAM5业务流程梳理建模手册
SAM5业务流程梳理建模手册SAM5业务流程梳理建模手册
SAM5业务流程梳理建模手册
 
Introduction to ngn sce
Introduction to ngn sceIntroduction to ngn sce
Introduction to ngn sce
 
C/C++调试、跟踪及性能分析工具综述
C/C++调试、跟踪及性能分析工具综述C/C++调试、跟踪及性能分析工具综述
C/C++调试、跟踪及性能分析工具综述
 
Accel_Series_2023Autumn_Zh.pptx
Accel_Series_2023Autumn_Zh.pptxAccel_Series_2023Autumn_Zh.pptx
Accel_Series_2023Autumn_Zh.pptx
 
ASP.NET Core 2.1設計新思維與新發展
ASP.NET  Core 2.1設計新思維與新發展ASP.NET  Core 2.1設計新思維與新發展
ASP.NET Core 2.1設計新思維與新發展
 
敦群學院-SharePoint精英計畫-系統開發-Day 3
敦群學院-SharePoint精英計畫-系統開發-Day 3敦群學院-SharePoint精英計畫-系統開發-Day 3
敦群學院-SharePoint精英計畫-系統開發-Day 3
 
Spring 2.x 中文
Spring 2.x 中文Spring 2.x 中文
Spring 2.x 中文
 
API Survey #2 - Firebase realtime database
API Survey #2 - Firebase realtime databaseAPI Survey #2 - Firebase realtime database
API Survey #2 - Firebase realtime database
 
Android开发概览
Android开发概览Android开发概览
Android开发概览
 
ASP.NET Core MVC 2.2從開發到測試 - Development & Unit Testing
ASP.NET Core MVC 2.2從開發到測試 - Development & Unit TestingASP.NET Core MVC 2.2從開發到測試 - Development & Unit Testing
ASP.NET Core MVC 2.2從開發到測試 - Development & Unit Testing
 
I pv6資通設備與軟體規範建議書
I pv6資通設備與軟體規範建議書I pv6資通設備與軟體規範建議書
I pv6資通設備與軟體規範建議書
 
Cas Sso Intro
Cas Sso IntroCas Sso Intro
Cas Sso Intro
 
通行证项目技术分享
通行证项目技术分享通行证项目技术分享
通行证项目技术分享
 
通用即时到帐接口集成教程 Php版本
通用即时到帐接口集成教程 Php版本通用即时到帐接口集成教程 Php版本
通用即时到帐接口集成教程 Php版本
 
通用即时到帐接口集成教程 Php版本
通用即时到帐接口集成教程 Php版本通用即时到帐接口集成教程 Php版本
通用即时到帐接口集成教程 Php版本
 
开放源代码软件Media wiki成熟度评估
开放源代码软件Media wiki成熟度评估开放源代码软件Media wiki成熟度评估
开放源代码软件Media wiki成熟度评估
 
Dev307
Dev307Dev307
Dev307
 

Mais de Audrey Tang

Social Innovation & Digital Transformation
Social Innovation & Digital TransformationSocial Innovation & Digital Transformation
Social Innovation & Digital TransformationAudrey Tang
 
Stories from the Future of Democracy
Stories from the Future of DemocracyStories from the Future of Democracy
Stories from the Future of DemocracyAudrey Tang
 
TEDxTaipei 2017: 社會企業
TEDxTaipei 2017: 社會企業TEDxTaipei 2017: 社會企業
TEDxTaipei 2017: 社會企業Audrey Tang
 
唐鳳政務委員業務工作報告
唐鳳政務委員業務工作報告唐鳳政務委員業務工作報告
唐鳳政務委員業務工作報告Audrey Tang
 
資訊服務採購契約範本 修正明細對照 1060713
資訊服務採購契約範本 修正明細對照 1060713資訊服務採購契約範本 修正明細對照 1060713
資訊服務採購契約範本 修正明細對照 1060713Audrey Tang
 
服務型智慧政府推動計畫 v9
服務型智慧政府推動計畫 v9服務型智慧政府推動計畫 v9
服務型智慧政府推動計畫 v9Audrey Tang
 
打造一站式的防救災資訊整合平臺
打造一站式的防救災資訊整合平臺打造一站式的防救災資訊整合平臺
打造一站式的防救災資訊整合平臺Audrey Tang
 
開放政府聯絡人第11次協作會議簡報
開放政府聯絡人第11次協作會議簡報開放政府聯絡人第11次協作會議簡報
開放政府聯絡人第11次協作會議簡報Audrey Tang
 
第7次協作會議會後會簡報v6.0
第7次協作會議會後會簡報v6.0第7次協作會議會後會簡報v6.0
第7次協作會議會後會簡報v6.0Audrey Tang
 
臨時動議:社會企業連繫會議分組
臨時動議:社會企業連繫會議分組臨時動議:社會企業連繫會議分組
臨時動議:社會企業連繫會議分組Audrey Tang
 
議程及歷次列管表
議程及歷次列管表議程及歷次列管表
議程及歷次列管表Audrey Tang
 
討論案一:中、南、東部在地社企會談規劃情形
討論案一:中、南、東部在地社企會談規劃情形討論案一:中、南、東部在地社企會談規劃情形
討論案一:中、南、東部在地社企會談規劃情形Audrey Tang
 
報告案四之一:創櫃板協助社會企業籌資之推動現況
報告案四之一:創櫃板協助社會企業籌資之推動現況報告案四之一:創櫃板協助社會企業籌資之推動現況
報告案四之一:創櫃板協助社會企業籌資之推動現況Audrey Tang
 
報告案四之二:國發基金運用資金協助社會發展辦理方式
報告案四之二:國發基金運用資金協助社會發展辦理方式報告案四之二:國發基金運用資金協助社會發展辦理方式
報告案四之二:國發基金運用資金協助社會發展辦理方式Audrey Tang
 
報告案二:組團參加2017年社會企業世界論壇辦理進度報告
報告案二:組團參加2017年社會企業世界論壇辦理進度報告報告案二:組團參加2017年社會企業世界論壇辦理進度報告
報告案二:組團參加2017年社會企業世界論壇辦理進度報告Audrey Tang
 
報告案三 :SEWF申辦2019進度說明
報告案三 :SEWF申辦2019進度說明報告案三 :SEWF申辦2019進度說明
報告案三 :SEWF申辦2019進度說明Audrey Tang
 
2017-06-17 臺灣網路治理論壇
2017-06-17 臺灣網路治理論壇2017-06-17 臺灣網路治理論壇
2017-06-17 臺灣網路治理論壇Audrey Tang
 
行政院數位國家創新經濟推動小組設置要點
行政院數位國家創新經濟推動小組設置要點行政院數位國家創新經濟推動小組設置要點
行政院數位國家創新經濟推動小組設置要點Audrey Tang
 
DIGI⁺ 數位政府
DIGI⁺ 數位政府DIGI⁺ 數位政府
DIGI⁺ 數位政府Audrey Tang
 
臺北市政府資訊局 公民參與數位協作工具實務班
臺北市政府資訊局 公民參與數位協作工具實務班臺北市政府資訊局 公民參與數位協作工具實務班
臺北市政府資訊局 公民參與數位協作工具實務班Audrey Tang
 

Mais de Audrey Tang (20)

Social Innovation & Digital Transformation
Social Innovation & Digital TransformationSocial Innovation & Digital Transformation
Social Innovation & Digital Transformation
 
Stories from the Future of Democracy
Stories from the Future of DemocracyStories from the Future of Democracy
Stories from the Future of Democracy
 
TEDxTaipei 2017: 社會企業
TEDxTaipei 2017: 社會企業TEDxTaipei 2017: 社會企業
TEDxTaipei 2017: 社會企業
 
唐鳳政務委員業務工作報告
唐鳳政務委員業務工作報告唐鳳政務委員業務工作報告
唐鳳政務委員業務工作報告
 
資訊服務採購契約範本 修正明細對照 1060713
資訊服務採購契約範本 修正明細對照 1060713資訊服務採購契約範本 修正明細對照 1060713
資訊服務採購契約範本 修正明細對照 1060713
 
服務型智慧政府推動計畫 v9
服務型智慧政府推動計畫 v9服務型智慧政府推動計畫 v9
服務型智慧政府推動計畫 v9
 
打造一站式的防救災資訊整合平臺
打造一站式的防救災資訊整合平臺打造一站式的防救災資訊整合平臺
打造一站式的防救災資訊整合平臺
 
開放政府聯絡人第11次協作會議簡報
開放政府聯絡人第11次協作會議簡報開放政府聯絡人第11次協作會議簡報
開放政府聯絡人第11次協作會議簡報
 
第7次協作會議會後會簡報v6.0
第7次協作會議會後會簡報v6.0第7次協作會議會後會簡報v6.0
第7次協作會議會後會簡報v6.0
 
臨時動議:社會企業連繫會議分組
臨時動議:社會企業連繫會議分組臨時動議:社會企業連繫會議分組
臨時動議:社會企業連繫會議分組
 
議程及歷次列管表
議程及歷次列管表議程及歷次列管表
議程及歷次列管表
 
討論案一:中、南、東部在地社企會談規劃情形
討論案一:中、南、東部在地社企會談規劃情形討論案一:中、南、東部在地社企會談規劃情形
討論案一:中、南、東部在地社企會談規劃情形
 
報告案四之一:創櫃板協助社會企業籌資之推動現況
報告案四之一:創櫃板協助社會企業籌資之推動現況報告案四之一:創櫃板協助社會企業籌資之推動現況
報告案四之一:創櫃板協助社會企業籌資之推動現況
 
報告案四之二:國發基金運用資金協助社會發展辦理方式
報告案四之二:國發基金運用資金協助社會發展辦理方式報告案四之二:國發基金運用資金協助社會發展辦理方式
報告案四之二:國發基金運用資金協助社會發展辦理方式
 
報告案二:組團參加2017年社會企業世界論壇辦理進度報告
報告案二:組團參加2017年社會企業世界論壇辦理進度報告報告案二:組團參加2017年社會企業世界論壇辦理進度報告
報告案二:組團參加2017年社會企業世界論壇辦理進度報告
 
報告案三 :SEWF申辦2019進度說明
報告案三 :SEWF申辦2019進度說明報告案三 :SEWF申辦2019進度說明
報告案三 :SEWF申辦2019進度說明
 
2017-06-17 臺灣網路治理論壇
2017-06-17 臺灣網路治理論壇2017-06-17 臺灣網路治理論壇
2017-06-17 臺灣網路治理論壇
 
行政院數位國家創新經濟推動小組設置要點
行政院數位國家創新經濟推動小組設置要點行政院數位國家創新經濟推動小組設置要點
行政院數位國家創新經濟推動小組設置要點
 
DIGI⁺ 數位政府
DIGI⁺ 數位政府DIGI⁺ 數位政府
DIGI⁺ 數位政府
 
臺北市政府資訊局 公民參與數位協作工具實務班
臺北市政府資訊局 公民參與數位協作工具實務班臺北市政府資訊局 公民參與數位協作工具實務班
臺北市政府資訊局 公民參與數位協作工具實務班
 

Último

行政院第3900次院會 報二-06 中產以下自用住宅貸款戶支持專案 內政部 懶人包.pptx
行政院第3900次院會 報二-06 中產以下自用住宅貸款戶支持專案 內政部 懶人包.pptx行政院第3900次院會 報二-06 中產以下自用住宅貸款戶支持專案 內政部 懶人包.pptx
行政院第3900次院會 報二-06 中產以下自用住宅貸款戶支持專案 內政部 懶人包.pptxreleaseey
 
行政院第3900次院會報二-01 全民共享普發現金執行狀況與成效-財政部 懶人包
行政院第3900次院會報二-01 全民共享普發現金執行狀況與成效-財政部 懶人包行政院第3900次院會報二-01 全民共享普發現金執行狀況與成效-財政部 懶人包
行政院第3900次院會報二-01 全民共享普發現金執行狀況與成效-財政部 懶人包releaseey
 
行政院第3900次院會 報二-03 疫後強化經濟與社會韌性及全民共享經濟成果特別預算執行情形與成效-「行政院促進公共運輸使用方案」及「加速擴大吸引國際觀光...
行政院第3900次院會 報二-03 疫後強化經濟與社會韌性及全民共享經濟成果特別預算執行情形與成效-「行政院促進公共運輸使用方案」及「加速擴大吸引國際觀光...行政院第3900次院會 報二-03 疫後強化經濟與社會韌性及全民共享經濟成果特別預算執行情形與成效-「行政院促進公共運輸使用方案」及「加速擴大吸引國際觀光...
行政院第3900次院會 報二-03 疫後強化經濟與社會韌性及全民共享經濟成果特別預算執行情形與成效-「行政院促進公共運輸使用方案」及「加速擴大吸引國際觀光...releaseey
 
報一-06 0403地震專案小組目前辦理情形-工程會 懶人包.pdf報一-06 0403地震專案小組目前辦理情形-工程會 懶人包.pdf
報一-06 0403地震專案小組目前辦理情形-工程會 懶人包.pdf報一-06 0403地震專案小組目前辦理情形-工程會 懶人包.pdf報一-06 0403地震專案小組目前辦理情形-工程會 懶人包.pdf報一-06 0403地震專案小組目前辦理情形-工程會 懶人包.pdf
報一-06 0403地震專案小組目前辦理情形-工程會 懶人包.pdf報一-06 0403地震專案小組目前辦理情形-工程會 懶人包.pdfjoelin19880210
 
行政院第3900次院會 報二-08 疫後就學貸款補助方案-教育部 懶人包.pptx
行政院第3900次院會 報二-08 疫後就學貸款補助方案-教育部 懶人包.pptx行政院第3900次院會 報二-08 疫後就學貸款補助方案-教育部 懶人包.pptx
行政院第3900次院會 報二-08 疫後就學貸款補助方案-教育部 懶人包.pptxreleaseey
 
討一 中小企業發展條例-經濟部 懶人包.pdf討一 中小企業發展條例-經濟部 懶人包.pdf
討一 中小企業發展條例-經濟部 懶人包.pdf討一 中小企業發展條例-經濟部 懶人包.pdf討一 中小企業發展條例-經濟部 懶人包.pdf討一 中小企業發展條例-經濟部 懶人包.pdf
討一 中小企業發展條例-經濟部 懶人包.pdf討一 中小企業發展條例-經濟部 懶人包.pdfjoelin19880210
 
行政院第3900次院會 報二-05 照顧弱勢族群與關懷服務-衛生福利部 懶人包.ppx
行政院第3900次院會 報二-05 照顧弱勢族群與關懷服務-衛生福利部 懶人包.ppx行政院第3900次院會 報二-05 照顧弱勢族群與關懷服務-衛生福利部 懶人包.ppx
行政院第3900次院會 報二-05 照顧弱勢族群與關懷服務-衛生福利部 懶人包.ppxreleaseey
 
行政院第3900次院會 報二-04 強化農業韌性 農漁民協助措施-農業部 懶人包
行政院第3900次院會 報二-04 強化農業韌性 農漁民協助措施-農業部 懶人包行政院第3900次院會 報二-04 強化農業韌性 農漁民協助措施-農業部 懶人包
行政院第3900次院會 報二-04 強化農業韌性 農漁民協助措施-農業部 懶人包releaseey
 
行政院第3900次院會 報二-07 溫柔堅韌 振興振心-文化部 懶人包.pptx
行政院第3900次院會 報二-07 溫柔堅韌 振興振心-文化部 懶人包.pptx行政院第3900次院會 報二-07 溫柔堅韌 振興振心-文化部 懶人包.pptx
行政院第3900次院會 報二-07 溫柔堅韌 振興振心-文化部 懶人包.pptxreleaseey
 
行政院第3900次院會 報二-02 疫後強化經濟與社會韌性及全民共享經濟成果特別預算執行情形與成效-產業及中小企業升級轉型-經濟部 懶人包
行政院第3900次院會 報二-02 疫後強化經濟與社會韌性及全民共享經濟成果特別預算執行情形與成效-產業及中小企業升級轉型-經濟部 懶人包行政院第3900次院會 報二-02 疫後強化經濟與社會韌性及全民共享經濟成果特別預算執行情形與成效-產業及中小企業升級轉型-經濟部 懶人包
行政院第3900次院會 報二-02 疫後強化經濟與社會韌性及全民共享經濟成果特別預算執行情形與成效-產業及中小企業升級轉型-經濟部 懶人包releaseey
 
報一-02 建築物損毀情形及家園重建-內政部 懶人包.pdf報一-02 建築物損毀情形及家園重建-內政部 懶人包.pdf
報一-02 建築物損毀情形及家園重建-內政部 懶人包.pdf報一-02 建築物損毀情形及家園重建-內政部 懶人包.pdf報一-02 建築物損毀情形及家園重建-內政部 懶人包.pdf報一-02 建築物損毀情形及家園重建-內政部 懶人包.pdf
報一-02 建築物損毀情形及家園重建-內政部 懶人包.pdf報一-02 建築物損毀情形及家園重建-內政部 懶人包.pdfjoelin19880210
 
行政院第3900次院會 討二 行政院主計總處
行政院第3900次院會 討二 行政院主計總處行政院第3900次院會 討二 行政院主計總處
行政院第3900次院會 討二 行政院主計總處releaseey
 

Último (12)

行政院第3900次院會 報二-06 中產以下自用住宅貸款戶支持專案 內政部 懶人包.pptx
行政院第3900次院會 報二-06 中產以下自用住宅貸款戶支持專案 內政部 懶人包.pptx行政院第3900次院會 報二-06 中產以下自用住宅貸款戶支持專案 內政部 懶人包.pptx
行政院第3900次院會 報二-06 中產以下自用住宅貸款戶支持專案 內政部 懶人包.pptx
 
行政院第3900次院會報二-01 全民共享普發現金執行狀況與成效-財政部 懶人包
行政院第3900次院會報二-01 全民共享普發現金執行狀況與成效-財政部 懶人包行政院第3900次院會報二-01 全民共享普發現金執行狀況與成效-財政部 懶人包
行政院第3900次院會報二-01 全民共享普發現金執行狀況與成效-財政部 懶人包
 
行政院第3900次院會 報二-03 疫後強化經濟與社會韌性及全民共享經濟成果特別預算執行情形與成效-「行政院促進公共運輸使用方案」及「加速擴大吸引國際觀光...
行政院第3900次院會 報二-03 疫後強化經濟與社會韌性及全民共享經濟成果特別預算執行情形與成效-「行政院促進公共運輸使用方案」及「加速擴大吸引國際觀光...行政院第3900次院會 報二-03 疫後強化經濟與社會韌性及全民共享經濟成果特別預算執行情形與成效-「行政院促進公共運輸使用方案」及「加速擴大吸引國際觀光...
行政院第3900次院會 報二-03 疫後強化經濟與社會韌性及全民共享經濟成果特別預算執行情形與成效-「行政院促進公共運輸使用方案」及「加速擴大吸引國際觀光...
 
報一-06 0403地震專案小組目前辦理情形-工程會 懶人包.pdf報一-06 0403地震專案小組目前辦理情形-工程會 懶人包.pdf
報一-06 0403地震專案小組目前辦理情形-工程會 懶人包.pdf報一-06 0403地震專案小組目前辦理情形-工程會 懶人包.pdf報一-06 0403地震專案小組目前辦理情形-工程會 懶人包.pdf報一-06 0403地震專案小組目前辦理情形-工程會 懶人包.pdf
報一-06 0403地震專案小組目前辦理情形-工程會 懶人包.pdf報一-06 0403地震專案小組目前辦理情形-工程會 懶人包.pdf
 
行政院第3900次院會 報二-08 疫後就學貸款補助方案-教育部 懶人包.pptx
行政院第3900次院會 報二-08 疫後就學貸款補助方案-教育部 懶人包.pptx行政院第3900次院會 報二-08 疫後就學貸款補助方案-教育部 懶人包.pptx
行政院第3900次院會 報二-08 疫後就學貸款補助方案-教育部 懶人包.pptx
 
討一 中小企業發展條例-經濟部 懶人包.pdf討一 中小企業發展條例-經濟部 懶人包.pdf
討一 中小企業發展條例-經濟部 懶人包.pdf討一 中小企業發展條例-經濟部 懶人包.pdf討一 中小企業發展條例-經濟部 懶人包.pdf討一 中小企業發展條例-經濟部 懶人包.pdf
討一 中小企業發展條例-經濟部 懶人包.pdf討一 中小企業發展條例-經濟部 懶人包.pdf
 
行政院第3900次院會 報二-05 照顧弱勢族群與關懷服務-衛生福利部 懶人包.ppx
行政院第3900次院會 報二-05 照顧弱勢族群與關懷服務-衛生福利部 懶人包.ppx行政院第3900次院會 報二-05 照顧弱勢族群與關懷服務-衛生福利部 懶人包.ppx
行政院第3900次院會 報二-05 照顧弱勢族群與關懷服務-衛生福利部 懶人包.ppx
 
行政院第3900次院會 報二-04 強化農業韌性 農漁民協助措施-農業部 懶人包
行政院第3900次院會 報二-04 強化農業韌性 農漁民協助措施-農業部 懶人包行政院第3900次院會 報二-04 強化農業韌性 農漁民協助措施-農業部 懶人包
行政院第3900次院會 報二-04 強化農業韌性 農漁民協助措施-農業部 懶人包
 
行政院第3900次院會 報二-07 溫柔堅韌 振興振心-文化部 懶人包.pptx
行政院第3900次院會 報二-07 溫柔堅韌 振興振心-文化部 懶人包.pptx行政院第3900次院會 報二-07 溫柔堅韌 振興振心-文化部 懶人包.pptx
行政院第3900次院會 報二-07 溫柔堅韌 振興振心-文化部 懶人包.pptx
 
行政院第3900次院會 報二-02 疫後強化經濟與社會韌性及全民共享經濟成果特別預算執行情形與成效-產業及中小企業升級轉型-經濟部 懶人包
行政院第3900次院會 報二-02 疫後強化經濟與社會韌性及全民共享經濟成果特別預算執行情形與成效-產業及中小企業升級轉型-經濟部 懶人包行政院第3900次院會 報二-02 疫後強化經濟與社會韌性及全民共享經濟成果特別預算執行情形與成效-產業及中小企業升級轉型-經濟部 懶人包
行政院第3900次院會 報二-02 疫後強化經濟與社會韌性及全民共享經濟成果特別預算執行情形與成效-產業及中小企業升級轉型-經濟部 懶人包
 
報一-02 建築物損毀情形及家園重建-內政部 懶人包.pdf報一-02 建築物損毀情形及家園重建-內政部 懶人包.pdf
報一-02 建築物損毀情形及家園重建-內政部 懶人包.pdf報一-02 建築物損毀情形及家園重建-內政部 懶人包.pdf報一-02 建築物損毀情形及家園重建-內政部 懶人包.pdf報一-02 建築物損毀情形及家園重建-內政部 懶人包.pdf
報一-02 建築物損毀情形及家園重建-內政部 懶人包.pdf報一-02 建築物損毀情形及家園重建-內政部 懶人包.pdf
 
行政院第3900次院會 討二 行政院主計總處
行政院第3900次院會 討二 行政院主計總處行政院第3900次院會 討二 行政院主計總處
行政院第3900次院會 討二 行政院主計總處
 

共通性應用程式介面規範

  • 2. 目  錄 壹、目的.........................................................................................1 貳、應用範圍.................................................................................1 參、名詞定義.................................................................................1 肆、規範準則.................................................................................3 一、符合 OAS 標準之 API 說明文件.....................................................3 (一)OAS 標準設計重點............................................................................................3 (二)OAS 標準驗證方式............................................................................................4 二、RESTful API 語法規則....................................................................5 三、API 版本描述方式...........................................................................6 四、API Discovery...................................................................................6 附錄.................................................................................................7 附錄 1-OpenAPI Specification 實際案例解析......................................7 附錄 2-OpenAPI Specification 中文摘要譯本....................................12
  • 3. 壹、目的 原 104 年 7 月頒訂「共通性資料存取應用程式介面規範」目的為提供 各資料開放平臺使用者以一致性應用程式介面 ( Application Programming Interface, 以下簡稱 API )取得資料。以 RESTful 風格為主要基礎,訂定應 用程式介面的呼叫方式、語法規則及所提供的介面類型等項目,以達自動 資料介接目標。 為擴大政府資訊服務效益,並保有各系統 API 開發彈性,爰導入國際 Open API Initiative 組織之 OpenAPI Specification (以下簡稱 OAS) 標準,藉 由一致性之描述方法,提供機器可讀之標準格式 API 說明文件,以大幅降 低資料存取、API 調整以及維護等門檻,進而提升政府資訊效能。 貳、應用範圍 本規範適用於可資料讀取/寫入之應用程式介面(API),為使 API 具有 共通性之特性,各機關採 API 對外提供服務或其傳輸資料內容不涉及機敏 性之 API,請提供符合 OAS 標準之說明文件。不論該 API 所使用之授權及 存取限制,均可採 OAS 標準進行描述。 參、名詞定義 英文名稱 中文名稱 定義 API (Application Programming Interface) 應用程式介面 為「『電腦作業系統 (Operating system)』或 『程式函式庫』提供給應 用程式呼叫使用的程式碼 」。其主要目的是讓應用 程式開發人員得以呼叫一 組常式功能,而無須考慮 其底層的原始碼為何、或 理解其內部工作機制的細 節。API 本身是抽象的,它 1
  • 4. 僅定義了一個介面,而不 涉及應用程式在實際實現 過程中的具體操作。 REST 含狀態傳輸 全名為 Representational State Transfer,是一種軟體 架構設計風格。資源由 URI 指定,對資源的操作包括 取得、創建、修改和刪除 資源,這些操作正好對應 HTTP 協議提供之 GET、POST、PUT 和 DELETE 方法。 RESTful 含狀態傳輸的 Web 服務 是一個使用 HTTP 並遵循 REST 原則,以 URL 定位 資源,根據 HTTP 內容指 示操作動作與回應訊息。 JSON - 一種常見的輕量級資料交 換格式 YAML - 一個可讀性高,用來表達 資料序列的格式 SRU (Service Root URL) 服務根網址 描述平臺上提供各類別應 用服務之網址。 Resource Path 資源路徑 接續於服務根網址後,指 定某一資料集之資料資源 路徑 Query Options 查詢選項 接續於資源路徑後,針對 某一應用服務指定某一資 料集之資源項目,表達所 欲取得資料的範圍或查詢 的條件 Metadata 詮釋資料 描述資料的資料 M2M (Machine to Machine) 機器與機器間資料交換 機器中的應用系統,已設 定好定期呼叫機制與呼叫 API 方式,定期透過網際網 路直接呼叫資料開放平臺 提供之 API,以系統介接自 動取得特定資料。 2
  • 5. 肆、規範準則 本規範之 API 設計主要依循共通性、輕便性及標準化準則。 ● 共通性:參採 Open API Initiative 組織之 OpenAPI Specification 標準, 作為 API 說明文件之一致標準。 ● 輕便性:參考現階段及未來趨勢之 API 呼叫方式,採用 RESTful 風格 API。 ● 標準化:參考國際通用 W3C 相關標準(如 URI、HTTP 等)及 OData.org 相關規範訂定之。 一、符合 OAS 標準之 API 說明文件 為實現共通性應用程式介面,API 開發應提供符合 OAS 標準1 之一致 性描述方法,提供機器可讀之標準格式 API 說明文件。 提供 OAS 實際案例解析如附錄 1,並提供 OAS 標準之中文摘要譯本 如附錄 2 供參。 (一)OAS 標準設計重點 ● 符合 OAS 標準之 API 說明文件(以下簡稱 OAS 文件)原則上由單一檔 案製成。 ● OAS 文件需以 JSON 或 YAML 檔案格式呈現(API 本身的輸入和回 傳值以及其他內容格式則未限制),並建議將 API 說明文件命名為 openapi.json 或 openapi.yaml。 ● OAS 文件之基本資料類型是依據 JSON Schema Specification Wright Draft 00 支援的類型訂定。其架構基於根物件 OpenAPI Object 展開, 物件具備各自的固定欄位(Fixed Fields),各欄位之類型(Type)則須符 合基本類別或物件定義。 以下摘要 OpenAPI Object 之固定欄位說明如下: 1 OAI 官方正式發布 OAS 版本:https://github.com/OAI/OpenAPI-Specification/tree/master/versions 3
  • 6. 欄位名稱 Field Name 類型 Type 描述 Description openapi string 必填,這字串必須載明該文件所使用的 OpenAPI Specification 版本。這個 openapi 欄位應該要讓使 用者可藉由工具直譯其版本。該欄位與 API info 版本 號無關。 info Info Object 必填,提供這份 API 的詮釋資料。如有需要,這詮釋 資料亦可由使用者所使用。 servers [Server Object] 伺服器物件,可提供至目標伺服器之連結資訊。若未 提供該欄位,或為空陣列,則伺服器欄位之預設 URL 將會是根目錄"/"。 paths Paths Object 必填,記載這份 API 的功能操作及可用路徑。 components Components Object 用於記載保存於各種 schema 之元素。 security [Security Requirement Object] 宣告其可跨用於整份 API 之安全機制。其清單內包含 可供使用的 security requirement objects。僅需有一項 security requirement objects 滿足授權需求即可。可藉 由個別操作覆蓋此定義。 tags [Tag Object] 本標準於附加詮釋資料所使用的標籤清單。標籤順序 可被分析工具所解析。並非所有 Operation Object 所使 用的標籤都必須被宣告,未被宣告之標籤可被隨機地 或邏輯性地組織起來。清單中每個標籤名稱都必得是 獨一無二的。 (二)OAS 標準驗證方式 API 開發人員可透過 Open API Initiative 所提供之官方驗證工具2 ,對 OAS 文件內容進行檢測,若檢測結果無錯誤訊息且其顯示內容符合機關之 專案需求,可視為通過驗證。 2 OAI 提供之第三方驗證器,其驗證結果僅供參考: https://github.com/OAI/OpenAPI- Specification/blob/OpenAPI.next/IMPLEMENTATIONS.md 4
  • 7. 二、RESTful API 語法規則 以政府資料開放平臺(data.gov.tw)為例,規劃 REST Web API,讓資 料使用者可以 HTTP GET 方式,取得政府資料開放平臺之資料,API 呼叫 回傳內容格式則以 JSON 為主,若 API 輸出內容格式為 JSON,則 HTTP header Content-Type 為 application/json。 服務路徑 URL 分為服務根網址(Service Root URL,簡稱 SRU)、資源 路徑(Resource Path)和查詢選項(Query Options): ● 服務根網址:平臺上提供該類別應用服務之網址。 ● 資源路徑:接續於 SRU 後,以指定某一資源項目路徑名稱。 ● 查詢選項:接續於資源路徑後,針對某一應用服務,指定所欲取得資 料之範圍或查詢之條件。 圖-1 URL 結構 依照上述 URL 結構定義,下圖以取得一資料集之資料資源內容 URL 為例。 http://data.gov.tw/api/ __________________/ | service root URL http://data.gov.tw/api/rest/datastore/355000000I-000003-001?limit=20&sort=County __________________/ ________________________________/ __________________/ | | | service root URL resource path query options 圖-2 URL 結構範例說明 5
  • 8. 三、API 版本描述方式 因 API 規格或實作可能有版本之演進,故如有需要描述版本資訊應於 服務根網址(Service Root URL)說明,如下圖。版本資訊格式建議使用 v1、v2、v3,不建議使用 v-1.1、v1.2、1.3。 http://data.gov.tw/api/v1/rest/datastore/355000000I-000003-001?limit=20&sort=County ____________________/ ________________________________/ __________________/ | | | service root URL resource path query options 圖-3 含有版本資訊 URL 結構範例說明 四、API Discovery 如機關所提供之 API 可供外界所查詢,建議可於首頁 html 文件或者是 首頁的 Web 服務的 header 加入 API 鏈接關係,例如: <link rel =“api”type =“application / apis + json”href =“https://example.com/apis.json”/> APIs.json 並非 OAS 標準的一部份,而是一個機器可讀的 sitemap 概念 ,可將該網站所有使用到的 API 進行列示。 6
  • 9. 附錄 附錄 1-OpenAPI Specification 實際案例解析 (一)JSON 格式-以「交通部公共運輸整合資訊流通服務平臺」為例 該規範已建立符合 Swagger (OAS 2.0)規範之 JSON 格式說明文件 (網路 位址:http://ptx.transportdata.tw/MOTC/API/Main/docs/v2 ),以下提供已 轉換至 OAS3 之 JSON 與 YAML 格式比對摘要: ● OpenAPI 欄位:版本描述。 JSON 格式 YAML 格式 { "openapi": "3.0.0-rc2", openapi: 3.0.0-rc2 ● server 欄位:路徑描述。 JSON 格式 YAML 格式 "servers": [ { "url": "http://ptx.transportdata.tw/MOTC" } ], servers: - url: http://ptx.transportdata.tw/MOTC ● info 欄位:該 API 之基本詮釋資料。 JSON 格式 YAML 格式 "info": { "version": "v2", "title": "MOTC Transport API V2", "description": "</div>n <div class="info_description markdown">資 料服務開發實作參考手冊:<a href= http://ptx.transportdata.tw/ptx/Downloa d/公共運輸整合資訊平台資料服務開發實作.pdf > 請點我</a><br>公車動態使用注意事項:<a href= http://ptx.transportdata.tw/ptx/Downloa d/交通部公共運輸整合資訊流通服務_公車動態預估 到站 N1 資料使用注意事項.pptx >請點我 </a><br>資料服務使用注意事項:<a href= http://ptx.transportdata.tw/ptx/Downloa d/資料服務使用注意事項(Readme)-v1.pdf >請點 info: version: v2 title: MOTC Transport API V2 description: |- </div> <div class="info_description markdown">資料服務開發實作參考手冊:<a href= http://ptx.transportdata.tw/ptx/Downloa d/公共運輸整合資訊平台資料服務開發實作.pdf > 請點我</a><br>公車動態使用注意事項:<a href= http://ptx.transportdata.tw/ptx/Downloa d/交通部公共運輸整合資訊流通服務_公車動態預估 到站 N1 資料使用注意事項.pptx >請點我 </a><br>資料服務使用注意事項:<a href= http://ptx.transportdata.tw/ptx/Downloa 7
  • 10. 我</a><br>API URI Convention 文件說明:<a href= http://ptx.transportdata.tw/ptx/Downloa d/API_URI_Convention 文件_v1.pdf >請點我< /a>" }, d/資料服務使用注意事項(Readme)-v1.pdf >請點 我</a><br>API URI Convention 文件說明:<a href= http://ptx.transportdata.tw/ptx/Downloa d/API_URI_Convention 文件_v1.pdf >請點我< /a> ● paths 欄位:該 API 各項功能之呼叫路徑,可與 server 欄位中的路徑結合 為完整網址,並提供該項 API 之各項欄位、類別定義,以及範例說明。 (本案例僅摘要「取得指定[縣市]的公車動態定時資料(A1)」功能) JSON 格式 YAML 格式 "paths": { "/v2/Bus/RealTimeByFrequency/City/{City}": { "get": { "tags": [ "CityBusApi" ], "summary": "取得指定[縣市]的公車動態定時資 料(A1)", "description": "市區公車之定時資料(A1)", "operationId": "CityBusApi_RealTimeByFrequency", "parameters": [ { "name": "City", "in": "path", "description": "欲查詢縣市", "required": true, "schema": { "type": "string", "enum": [ { "Text": "臺北市", "Value": "Taipei" }, { "Text": "新北市", "Value": "NewTaipei" }, { "Text": "桃園市", "Value": "Taoyuan" }, { "Text": "臺中市", "Value": "Taichung" }, { "Text": "臺南市", "Value": "Tainan" }, { "Text": "高雄市", paths: '/v2/Bus/RealTimeByFrequency/City/ {City}': get: tags: - CityBusApi summary: '取得指定[縣市]的公車動態定時 資料(A1)' description: 市區公車之定時資料(A1) operationId: CityBusApi_RealTimeByFrequency parameters: - name: City in: path description: 欲查詢縣市 required: true schema: type: string enum: - Text: 臺北市 Value: Taipei - Text: 新北市 Value: NewTaipei - Text: 桃園市 Value: Taoyuan - Text: 臺中市 Value: Taichung - Text: 臺南市 Value: Tainan - Text: 高雄市 Value: Kaohsiung - Text: 基隆市 Value: Keelung - Text: 新竹市 Value: Hsinchu - Text: 新竹縣 Value: HsinchuCounty - Text: 苗栗縣 Value: MiaoliCounty - Text: 彰化縣 Value: ChanghuaCounty - Text: 南投縣 Value: NantouCounty 8
  • 11. "Value": "Kaohsiung" }, { "Text": "基隆市", "Value": "Keelung" }, { "Text": "新竹市", "Value": "Hsinchu" }, { "Text": "新竹縣", "Value": "HsinchuCounty" }, { "Text": "苗栗縣", "Value": "MiaoliCounty" }, { "Text": "彰化縣", "Value": "ChanghuaCounty" }, { "Text": "南投縣", "Value": "NantouCounty" }, { "Text": "雲林縣", "Value": "YunlinCounty" }, { "Text": "嘉義縣", "Value": "ChiayiCounty" }, { "Text": "嘉義市", "Value": "Chiayi" }, { "Text": "屏東縣", "Value": "PingtungCounty" }, { "Text": "宜蘭縣", "Value": "YilanCounty" }, { "Text": "花蓮縣", "Value": "HualienCounty" }, { "Text": "臺東縣", "Value": "TaitungCounty" }, { "Text": "金門縣", "Value": "KinmenCounty" }, { - Text: 雲林縣 Value: YunlinCounty - Text: 嘉義縣 Value: ChiayiCounty - Text: 嘉義市 Value: Chiayi - Text: 屏東縣 Value: PingtungCounty - Text: 宜蘭縣 Value: YilanCounty - Text: 花蓮縣 Value: HualienCounty - Text: 臺東縣 Value: TaitungCounty - Text: 金門縣 Value: KinmenCounty - Text: 澎湖縣 Value: PenghuCounty - Text: 連江縣 Value: LienchiangCounty - Text: 新北市(雙北雲) Value: TaipeiCloud - name: ticket in: query description: 可透過 Account/Login API 取得,預設為 guest 的 ticket required: false schema: type: string - name: $select in: query description: 挑選 schema: type: string - name: $filter in: query description: 過濾 schema: type: string - name: $orderby in: query description: 排序 schema: type: string - name: $top in: query description: 取前幾筆 schema: type: string default: 30 - name: $skip in: query description: 跳過前幾筆 schema: type: string - name: $format in: query description: 指定來源格式 9
  • 12. "Text": "澎湖縣", "Value": "PenghuCounty" }, { "Text": "連江縣", "Value": "LienchiangCounty" }, { "Text": "新北市(雙北雲)", "Value": "TaipeiCloud" } ] } }, { "name": "ticket", "in": "query", "description": "可透過 Account/Login API 取得,預設為 guest 的 ticket", "required": false, "schema": { "type": "string" } }, { "name": "$select", "in": "query", "description": "挑選", "schema": { "type": "string" } }, { "name": "$filter", "in": "query", "description": "過濾", "schema": { "type": "string" } }, { "name": "$orderby", "in": "query", "description": "排序", "schema": { "type": "string" } }, { "name": "$top", "in": "query", "description": "取前幾筆", "schema": { "type": "string", "default": 30 } }, { required: true schema: type: string enum: - Text: JSON Value: JSON - Text: XML Value: XML responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/' text/json: schema: type: array items: $ref: '#/components/schemas/' deprecated: false 10
  • 13. "name": "$skip", "in": "query", "description": "跳過前幾筆", "schema": { "type": "string" } }, { "name": "$format", "in": "query", "description": "指定來源格式", "required": true, "schema": { "type": "string", "enum": [ { "Text": "JSON", "Value": "JSON" }, { "Text": "XML", "Value": "XML" } ] } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/" } } }, "text/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/" } } } } } }, "deprecated": false } }, 11
  • 14. 附錄 2-OpenAPI Specification 中文摘要譯本 12