REST Enabling your Oracle Database (2018 Update)

Jeff Smith
Jeff SmithDistinguished Product Manager at Oracle Corp
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
ORDSDatabaseRESTAPI
https://oracle.com/rest
Jeff Smith
Senior Principal Product Manager
Jeff.d.smith@oracle.com || @thatjeffsmith
Database Tools, Oracle Corp
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Not Just THAT SQLDev Guy…
• Database Development Tools team
• Product manager/story teller
• Specialized Database tooling since 2001
• I bother help people online as @thatjeffsmith
• Contact me for a free remote presentation for your group/company
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Oracle
REST
Data
Services
3
Formerly Known as the APEX Listener
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Get audience sympathy/laughing early
• I’m gonna need a REST API for all of our Oracle data…
• …first thing Monday
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Your Requirements
• No connections to the DB (directly at least)
• No DB authentication (let the app/web tier handle that)
• Link driven (stateless)
• Plays nice with the rest of the apps
– Standard response/error codes
– JSON
– Well documented
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Employees Table =>
• GET
• PUT
• POST
• DELETE
• DESC
• DOCS
/ords/hr/employees
/ords/hr/employees/
/ords/hr/employees/:id
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
{JSON} or JavaScript Object Notation
• JAY-sun
• Not just for JavaScript
• Skinnier than XML
• Flexible
– Easily adapted to represent
database objects & data
• Link-friendly
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
8
Tabular
Nested
Hyperlink
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
But we never use SQL, only PL/SQL Table APIs!
• No worries!
• We auto-magically handle PL/SQL too
• RPC -> POST via HTTPS /ords/hr/procedureA
• Responses & Results (OUTs/RETURNs/REFCURSORs), in {JSON}
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Why should a DBA or PL/SQL Dev care about REST?
• RESTful web services are a way of providing interoperability between
computer systems on the Internet
• REST often treated as a Religion, BUT…
• …provides a predictable model for delivering services
• We aim for pure REST, but don’t let that pursuit get in the way of
practicality
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
REpresentational State Transfer (REST)
It relies on a stateless, client-server, cacheable communications protocol --
and in virtually all cases, the HTTP(S!) protocol is used.
REST is an architecture style for designing networked applications. The idea
is that, rather than using complex mechanisms such as CORBA, RPC or SOAP
to connect between machines, simple HTTP is used to make calls between
machines. (rest.elkstein.org)
11
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
• Small uniform set of operations: GET, POST, PUT, DELETE
(CRUD!)
• Small set of uniform status codes URLs & hyperlinks encourage
stateless behavior
• Text based protocol with simple request/response model
REST is Easy
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
• 1xx Informational responses.
• 2xx Success.
• 3xx Redirection.
• 4xx Client errors.
• 5xx Server errors.
About those Codes
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
• Model resources, not actions:
– GET /ords/hr/employees/ - GOOD
– GET /ords/hr/delete_emp/ - BAD
– DELETE /ords/hr/employees/97 - GOOD
• Uniform operations on all resources:
– GET, POST, PUT, DELETE, OPTIONS, HEAD
• Stateless requests, state transitions communicated via hyper-links.
The Architectural Style of the Web{REST}
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Resource Collection Pattern
• MASTER RESOURCE: called the Collection URI:
https://example.com/ords/hr/employees/
• DETAIL RESOURCE; called the Item URI:
https://example.com/ords/hr/employees/:id
15
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Method Purpose Classification Database Operation
GET Retrieve resource Safe, Idempotent SELECT
PUT Create or replace
resource
Idempotent MERGE, UPDATE
DELETE Delete resource Idempotent DELETE
POST Anything. Normally
create
Unsafe INSERT
The Verbs
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
• Java JEE mid tier application, e.g., WebLogic, Tomcat, Glassfish (deprecated)
– Also supported “Standalone” mode
• For input, maps/binds URI to SQL and PL/SQL
• For output, transforms results to JSON and other formats
Oracle REST Data ServicesHTTP(S) client Oracle Database
SQLMap & BindURI
JSON Transform to JSON SQL Result Set
How do we apply this Architectural Style to a DB?
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
https://host/ords/human/peeps/10
SELECT …
WHERE EMPLOYEE_ID = :id
Oracle DB
1. Browser GET request
2. Proxy connect HR, executes
‘peeps’ HANDLER code
ORDS Runs in WLS, Tomcat, or
as a standalone process
Oracle
REST
Data
Services
Anatomy of a RESTful Service Transaction
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Typical Architecture
• Standard webserver layout
• Implements Java Servlet
• Deploys to WLS, Tomcat, Glassfish
• OR Embedded Jetty (standalone)
WLS, Glassfish,
Tomcat
ORDS
Apache
Static Files
-HTML, CSS, JS
/hr/emp
JSON
Binary
HTML
…
HTTP(s) Results
JDBC
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
And it’s Easy!
I had been looking for a chance to perform a POC, so I proposed I just provide him
with a couple of web services. In under a day I had functioning
web services in place for him to consume. There’s been
refinements to them and new ones developed since then. We are now exploring
where else we could leverage this technology.
- a REAL customer talking about ORDS
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
ORDS – How do I get started???
Use SQL Developer to install & run. Use Hands On Labs to learn.
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Full Command-Line Interface & PL/SQL API
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Enable a Schema
• Services are EXECUTED as the REST enabled schema USER …
• … via ORDS_PUBLIC_USER Proxy Connect
• What your session can see & do = straight forward & predictable
• Secured/Authorization outside the database
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Develop RESTFul Services: PL/SQL, GUI, or even REST
BEGIN
ORDS.ENABLE_SCHEMA(
p_enabled => TRUE,
p_schema => 'ORDS_DEMO',
p_url_mapping_type => 'BASE_PATH',
p_url_mapping_pattern => 'autodemo',
p_auto_rest_auth => FALSE);
ORDS.DEFINE_MODULE(
p_module_name => 'SPLAT',
p_base_path => '/splat/',
p_items_per_page => 25,
p_status => 'PUBLISHED',
p_comments => NULL);
ORDS.DEFINE_TEMPLATE(
p_module_name => 'SPLAT',
p_pattern => 'types',
p_priority => 0,
p_etag_type => 'HASH',
p_etag_query => NULL,
p_comments => NULL);
ORDS.DEFINE_HANDLER(
p_module_name => 'SPLAT',
p_pattern => 'types',
p_method => 'GET',
p_source_type => 'json/query',
p_items_per_page => 25,
p_mimes_allowed => '',
p_comments => NULL,
p_source =>
'select * from d_types'
);
COMMIT;
END;
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Code and No/Low Code RESTful Service Options
 No need to know Java
 Database developers (PLSQL & SQL) get started quickly
 PL/SQL API
 GUI/IDE Support (SQL Developer!)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Manual – You Define Modules/URIs/Handlers/the Code
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Automatic
 Pick the Database objects to PUBLISH
 TABLEs and VIEWs
 GET, POST, PUT, DELETE handlers avail for CRUD
 Stored Procedures, Functions, Packages (PL/SQL)
 POST handler avail for RPC
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Auto enablement of RESTful request
modules – User Interface
Exposes these operations
• Schema level Metadata
• Table Metadata
• Get ( Select )
• Query ( Filtering/Order/ASOF )
• Insert
• Update
• Delete
• Load CSV
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Update a Row
32
METHOD : PUT /:PK
REQUEST BODY : JSON
RESPONSE: 200 OK
• Location (Header)
• JSON (Body)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Remote Procedure Call over
HTTP(S) via POST
ORDS takes parameters as JSON, executes PL/SQL,
grabs output, sends back down as JSON
OUT INTEGER & SYS_REFCURSOR
{
"total_payroll": 631230,
"peeps_numbers": [
{
"id": 81,
"name": "Dummy4",
"salary": 0,
"hire_date": "2017-06-20T13:29:00Z"
},
{
"id": 65,
"name": "Bart",
"salary": 0,
"hire_date": "2017-06-20T13:29:00Z"
},
{
"id": 79,
…
}
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Execute PL/SQL TABLE API
Execute, REFCURSOR RETURN
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Ok, our boss came back with more details
• Funny pictures on the internet
• Put them in a table
• Show me a list of the funnies
• Let me see them on demand
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Scenario: Our Table
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
The RESTful Service (POST – PL/SQL Block)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
The POST Call (Postman)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("http://localhost:8080/ords/hr/test2/media")
.post(null)
.addHeader("content-type", "image/png")
.addHeader("title", "18.2 tease")
.addHeader("cache-control", "no-cache")
.addHeader("postman-token", "86b344ef-2aba-12e2-8788-4c316bc866e3")
.build();
Response response = client.newCall(request).execute();
The POST Call (Java)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
The POST Call (cURL)
curl -X POST 
http://localhost:8080/ords/hr/test2/media 
-H 'cache-control: no-cache’ 
-H 'content-type: image/png' 
-H 'postman-token: bf2bcb0d-8759-fc70-98ff-c3633b418dcb' 
-H 'title: 18.2 tease'
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
The Response
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
How About API to get all the images?
select title
,content_type
,id "$uri"
from gallery
order by title
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Module URI Templates
/ords/hr/employees
/ords/hr/employees/
/ords/hr/employees/:id
SQL & PLSQL
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
{Swagger}
Requirement: WELL DOCUMENTED
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Quick, Check in to Source Control!
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Mission Accomplished
• Link driven (stateless)
• Plays nice with others
– Standard response/error codes
– JSON
– Well documented
BONUS!
– Supported by Oracle
– No additional cost
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
• Disabled by default
• AUTH by user with sql dev priv or via DB
curl -X POST 
http://localhost:8080/ords/hr/_/sql 
-H 'authorization: Basic SFI6b3JhY2xl’ 
-H 'cache-control: no-cache’ 
-H 'content-type: application/sql’ 
-H 'postman-token: 23a49622-a195-cb76-0606-358f3e371cdd’ 
-d 'SELECT first_name, last_name, department_name
FROM hr.employees, hr.departments
where employees.department_id = departments.department_id'
Execute SQL via POST
New for 17.4 - _/sql/
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
ORDS is Flexible - Security
Caveats
• Almost all dev/demo/blog is done with security off & with HTTP
• Always, always, always secure REST services and run with HTTPS
See Scott Spendolini’s slides on Securing your REST APIs
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
First Party Authentication
• Oracle REST Data Services specific solution
• Only available to the author of the API, application must be deployed on
same origin as API
• https://example.com/api & https://example.com/app ✓
• https://api.example.com & https://app.example.com ✗
• User enters credentials in sign-in form, ORDS issues cookie, cookie is only
validated by ORDS if the request is determined to originate from the from
the same origin as the REST Service.
49
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
About OAuth 2.0
• IETF standard for securing access to REST APIs
• Comes in two forms:
• Two Legged - For Business to Business, server to server applications
• Example: Sync HR data between internal applications
• Three Legged - For Business to Consumer, app to end-user applications
• Example: Share subset of HR data with external benefits provider after
employee approves access.
• Third party registers client, issued credentials, uses credentials to
acquire access token, uses access token with request to prove
authorization
50
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
External Authentication
• Comes in many flavors, for example:
• Oracle Access Manager - SSO cookie at Oracle OHS server level
authenticates users stored in Oracle Identity Manager
• ORDS does not perform authentication, just authorization.
• Usually relies on HTTP cookies, need to restrict CORS allowed Origins to
avoid CSRF
51
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Coming Later This Year
• Available for On-Premises and Oracle Cloud DB Services
• Supports 11gR2 and higher
• Supports ‘Classic’ & Multitenant Architectures
• Supports RAC & Exadata
• Optional
REST API for managing your Oracle Database
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
In the year 2018…REST APIs for the Database!
Listener – Start, stop, status
Database Ops
Start, stop, alerts, INIT params, rotate TDE keys
PDB Ops
Start, stop, create, clone, drop, plug, unplug
OS Stats
Memory, cpu, processes
Reporting
Backups, sessions, waits, ASH, AWR, locks, V$LONG_OPS, RTSM
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Clone a PDB, Get a list of Wait Events, Read the Alert Log…
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Plus SQL Developer Web
• Optional!
• 11gR2 and higher
• DBA screens
• SQL Worksheet
– Run SQL, scripts, explain plan, autotrace, SQL history, formatter, insight
– Create & Edit TABLE dialogs
• RE Schemas to a Relational Diagram/DD Reports
Cloud First (Live in DBaaS NOW), On-Premises Later this Year
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
SQLDev Web – the Demo
Runs out of ORDS
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Thanks! Questions?
Resources
• Blogs
• Videos
• GitHub Examples
• Articles
– UKOUG Scene Why REST, and What’s in it or Me?
– Oracle Mag AUTO REST & REST Enabled SQL
1 of 55

Recommended

Oracle REST Data Services: Options for your Web Services by
Oracle REST Data Services: Options for your Web ServicesOracle REST Data Services: Options for your Web Services
Oracle REST Data Services: Options for your Web ServicesJeff Smith
15.8K views47 slides
Oracle Database Management REST API by
Oracle Database Management REST APIOracle Database Management REST API
Oracle Database Management REST APIJeff Smith
4.7K views18 slides
ORDS - Oracle REST Data Services by
ORDS - Oracle REST Data ServicesORDS - Oracle REST Data Services
ORDS - Oracle REST Data ServicesJustin Michael Raj
2K views40 slides
Oracle REST Data Services Best Practices/ Overview by
Oracle REST Data Services Best Practices/ OverviewOracle REST Data Services Best Practices/ Overview
Oracle REST Data Services Best Practices/ OverviewKris Rice
16.4K views42 slides
RESTful API - Best Practices by
RESTful API - Best PracticesRESTful API - Best Practices
RESTful API - Best PracticesTricode (part of Dept)
2.6K views20 slides
Oracle Office Hours - Exposing REST services with APEX and ORDS by
Oracle Office Hours - Exposing REST services with APEX and ORDSOracle Office Hours - Exposing REST services with APEX and ORDS
Oracle Office Hours - Exposing REST services with APEX and ORDSDoug Gault
4.3K views61 slides

More Related Content

What's hot

SPARQL introduction and training (130+ slides with exercices) by
SPARQL introduction and training (130+ slides with exercices)SPARQL introduction and training (130+ slides with exercices)
SPARQL introduction and training (130+ slides with exercices)Thomas Francart
2.1K views134 slides
Oracle Enterprise Manager by
Oracle Enterprise ManagerOracle Enterprise Manager
Oracle Enterprise ManagerBob Rhubart
4.1K views37 slides
OData Services by
OData ServicesOData Services
OData ServicesJovan Popovic
340 views22 slides
Jena – A Semantic Web Framework for Java by
Jena – A Semantic Web Framework for JavaJena – A Semantic Web Framework for Java
Jena – A Semantic Web Framework for JavaAleksander Pohl
5.2K views25 slides
Database Cloud Services Office Hours - 0421 - Migrate AWS to OCI by
Database Cloud Services Office Hours - 0421 - Migrate AWS to OCIDatabase Cloud Services Office Hours - 0421 - Migrate AWS to OCI
Database Cloud Services Office Hours - 0421 - Migrate AWS to OCITammy Bednar
1K views25 slides
Building Data Pipelines for Solr with Apache NiFi by
Building Data Pipelines for Solr with Apache NiFiBuilding Data Pipelines for Solr with Apache NiFi
Building Data Pipelines for Solr with Apache NiFiBryan Bende
11.3K views35 slides

What's hot(20)

SPARQL introduction and training (130+ slides with exercices) by Thomas Francart
SPARQL introduction and training (130+ slides with exercices)SPARQL introduction and training (130+ slides with exercices)
SPARQL introduction and training (130+ slides with exercices)
Thomas Francart2.1K views
Oracle Enterprise Manager by Bob Rhubart
Oracle Enterprise ManagerOracle Enterprise Manager
Oracle Enterprise Manager
Bob Rhubart4.1K views
Jena – A Semantic Web Framework for Java by Aleksander Pohl
Jena – A Semantic Web Framework for JavaJena – A Semantic Web Framework for Java
Jena – A Semantic Web Framework for Java
Aleksander Pohl5.2K views
Database Cloud Services Office Hours - 0421 - Migrate AWS to OCI by Tammy Bednar
Database Cloud Services Office Hours - 0421 - Migrate AWS to OCIDatabase Cloud Services Office Hours - 0421 - Migrate AWS to OCI
Database Cloud Services Office Hours - 0421 - Migrate AWS to OCI
Tammy Bednar1K views
Building Data Pipelines for Solr with Apache NiFi by Bryan Bende
Building Data Pipelines for Solr with Apache NiFiBuilding Data Pipelines for Solr with Apache NiFi
Building Data Pipelines for Solr with Apache NiFi
Bryan Bende11.3K views
Oracle E-Business Suite on Kubernetes Cluster by vasuballa
Oracle E-Business Suite on Kubernetes ClusterOracle E-Business Suite on Kubernetes Cluster
Oracle E-Business Suite on Kubernetes Cluster
vasuballa2.5K views
Hit Refresh with Oracle GoldenGate Microservices by Bobby Curtis
Hit Refresh with Oracle GoldenGate MicroservicesHit Refresh with Oracle GoldenGate Microservices
Hit Refresh with Oracle GoldenGate Microservices
Bobby Curtis2K views
Hadoop Tutorial | Big Data Hadoop Tutorial For Beginners | Hadoop Certificati... by Edureka!
Hadoop Tutorial | Big Data Hadoop Tutorial For Beginners | Hadoop Certificati...Hadoop Tutorial | Big Data Hadoop Tutorial For Beginners | Hadoop Certificati...
Hadoop Tutorial | Big Data Hadoop Tutorial For Beginners | Hadoop Certificati...
Edureka!1.8K views
Introduction to laravel framework by Ahmad Fatoni
Introduction to laravel frameworkIntroduction to laravel framework
Introduction to laravel framework
Ahmad Fatoni514 views
REST Enabling Your Oracle Database by Jeff Smith
REST Enabling Your Oracle DatabaseREST Enabling Your Oracle Database
REST Enabling Your Oracle Database
Jeff Smith45.3K views
Oracle REST Data Services by Chris Muir
Oracle REST Data ServicesOracle REST Data Services
Oracle REST Data Services
Chris Muir3.8K views
(ZDM) Zero Downtime DB Migration to Oracle Cloud by Ruggero Citton
(ZDM) Zero Downtime DB Migration to Oracle Cloud(ZDM) Zero Downtime DB Migration to Oracle Cloud
(ZDM) Zero Downtime DB Migration to Oracle Cloud
Ruggero Citton204 views
Ebs 12.2 con9021_pdf_9021_0001 by jucaab
Ebs 12.2 con9021_pdf_9021_0001Ebs 12.2 con9021_pdf_9021_0001
Ebs 12.2 con9021_pdf_9021_0001
jucaab5.8K views

Similar to REST Enabling your Oracle Database (2018 Update)

AWR and ASH in an EM12c World by
AWR and ASH in an EM12c WorldAWR and ASH in an EM12c World
AWR and ASH in an EM12c WorldKellyn Pot'Vin-Gorman
662 views90 slides
AWR and ASH Deep Dive by
AWR and ASH Deep DiveAWR and ASH Deep Dive
AWR and ASH Deep DiveKellyn Pot'Vin-Gorman
2K views87 slides
What's New in Oracle SQL Developer for 2018 by
What's New in Oracle SQL Developer for 2018What's New in Oracle SQL Developer for 2018
What's New in Oracle SQL Developer for 2018Jeff Smith
504 views43 slides
Oracle database 12c_and_DevOps by
Oracle database 12c_and_DevOpsOracle database 12c_and_DevOps
Oracle database 12c_and_DevOpsMaria Colgan
9.4K views58 slides
Kellyn Pot'Vin-Gorman - Awr and Ash by
Kellyn Pot'Vin-Gorman - Awr and AshKellyn Pot'Vin-Gorman - Awr and Ash
Kellyn Pot'Vin-Gorman - Awr and Ashgaougorg
345 views87 slides
NoSQL and SQL - Why Choose? Enjoy the best of both worlds with MySQL by
NoSQL and SQL - Why Choose? Enjoy the best of both worlds with MySQLNoSQL and SQL - Why Choose? Enjoy the best of both worlds with MySQL
NoSQL and SQL - Why Choose? Enjoy the best of both worlds with MySQLAndrew Morgan
3.4K views54 slides

Similar to REST Enabling your Oracle Database (2018 Update)(20)

What's New in Oracle SQL Developer for 2018 by Jeff Smith
What's New in Oracle SQL Developer for 2018What's New in Oracle SQL Developer for 2018
What's New in Oracle SQL Developer for 2018
Jeff Smith504 views
Oracle database 12c_and_DevOps by Maria Colgan
Oracle database 12c_and_DevOpsOracle database 12c_and_DevOps
Oracle database 12c_and_DevOps
Maria Colgan9.4K views
Kellyn Pot'Vin-Gorman - Awr and Ash by gaougorg
Kellyn Pot'Vin-Gorman - Awr and AshKellyn Pot'Vin-Gorman - Awr and Ash
Kellyn Pot'Vin-Gorman - Awr and Ash
gaougorg345 views
NoSQL and SQL - Why Choose? Enjoy the best of both worlds with MySQL by Andrew Morgan
NoSQL and SQL - Why Choose? Enjoy the best of both worlds with MySQLNoSQL and SQL - Why Choose? Enjoy the best of both worlds with MySQL
NoSQL and SQL - Why Choose? Enjoy the best of both worlds with MySQL
Andrew Morgan3.4K views
Oracle SQL Developer for SQL Server? by Jeff Smith
Oracle SQL Developer for SQL Server?Oracle SQL Developer for SQL Server?
Oracle SQL Developer for SQL Server?
Jeff Smith2.6K views
Leverage integration cloud_service_for_ebs_ by aioughydchapter
Leverage integration cloud_service_for_ebs_Leverage integration cloud_service_for_ebs_
Leverage integration cloud_service_for_ebs_
aioughydchapter921 views
Oracle Database 12c Feature Support in Oracle SQL Developer by Jeff Smith
Oracle Database 12c Feature Support in Oracle SQL DeveloperOracle Database 12c Feature Support in Oracle SQL Developer
Oracle Database 12c Feature Support in Oracle SQL Developer
Jeff Smith3.5K views
Oracle SQL Developer for the DBA by Jeff Smith
Oracle SQL Developer for the DBAOracle SQL Developer for the DBA
Oracle SQL Developer for the DBA
Jeff Smith12.8K views
Big Data Management System: Smart SQL Processing Across Hadoop and your Data ... by DataWorks Summit
Big Data Management System: Smart SQL Processing Across Hadoop and your Data ...Big Data Management System: Smart SQL Processing Across Hadoop and your Data ...
Big Data Management System: Smart SQL Processing Across Hadoop and your Data ...
DataWorks Summit2.3K views
Debugging PL/SQL from your APEX Applications with Oracle SQL Developer by Jeff Smith
Debugging PL/SQL from your APEX Applications with Oracle SQL DeveloperDebugging PL/SQL from your APEX Applications with Oracle SQL Developer
Debugging PL/SQL from your APEX Applications with Oracle SQL Developer
Jeff Smith5.6K views
RESTful Services for your Oracle Autonomous Database by Jeff Smith
RESTful Services for your Oracle Autonomous DatabaseRESTful Services for your Oracle Autonomous Database
RESTful Services for your Oracle Autonomous Database
Jeff Smith5.7K views
MySQL Cluster as Transactional NoSQL (KVS) by Ryusuke Kajiyama
MySQL Cluster as Transactional NoSQL (KVS)MySQL Cluster as Transactional NoSQL (KVS)
MySQL Cluster as Transactional NoSQL (KVS)
Ryusuke Kajiyama1.1K views
Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ... by Marco Antonio Maciel
Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...
Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...
SQLcl overview - A new Command Line Interface for Oracle Database by Jeff Smith
SQLcl overview - A new Command Line Interface for Oracle DatabaseSQLcl overview - A new Command Line Interface for Oracle Database
SQLcl overview - A new Command Line Interface for Oracle Database
Jeff Smith47.3K views
Pennsylvania Banner User Group Webinar: Oracle SQL Developer Tips & Tricks by Jeff Smith
Pennsylvania Banner User Group Webinar: Oracle SQL Developer Tips & TricksPennsylvania Banner User Group Webinar: Oracle SQL Developer Tips & Tricks
Pennsylvania Banner User Group Webinar: Oracle SQL Developer Tips & Tricks
Jeff Smith1K views

More from Jeff Smith

Oracle REST Data Services: POUG Edition by
Oracle REST Data Services: POUG EditionOracle REST Data Services: POUG Edition
Oracle REST Data Services: POUG EditionJeff Smith
547 views66 slides
Oracle SQL Developer Tips and Tricks: Data Edition by
Oracle SQL Developer Tips and Tricks: Data EditionOracle SQL Developer Tips and Tricks: Data Edition
Oracle SQL Developer Tips and Tricks: Data EditionJeff Smith
4.3K views42 slides
Change Management for Oracle Database with SQLcl by
Change Management for Oracle Database with SQLcl Change Management for Oracle Database with SQLcl
Change Management for Oracle Database with SQLcl Jeff Smith
5.1K views29 slides
Oracle SQLcl: Formatting your Query Results by
Oracle SQLcl: Formatting your Query ResultsOracle SQLcl: Formatting your Query Results
Oracle SQLcl: Formatting your Query ResultsJeff Smith
5.1K views18 slides
Oracle SQL Developer Data Modeler - for SQL Server by
Oracle SQL Developer Data Modeler - for SQL ServerOracle SQL Developer Data Modeler - for SQL Server
Oracle SQL Developer Data Modeler - for SQL ServerJeff Smith
2.8K views23 slides
Oracle SQL Developer: You're Doing it Wrong! by
Oracle SQL Developer: You're Doing it Wrong!Oracle SQL Developer: You're Doing it Wrong!
Oracle SQL Developer: You're Doing it Wrong!Jeff Smith
1.7K views43 slides

More from Jeff Smith(19)

Oracle REST Data Services: POUG Edition by Jeff Smith
Oracle REST Data Services: POUG EditionOracle REST Data Services: POUG Edition
Oracle REST Data Services: POUG Edition
Jeff Smith547 views
Oracle SQL Developer Tips and Tricks: Data Edition by Jeff Smith
Oracle SQL Developer Tips and Tricks: Data EditionOracle SQL Developer Tips and Tricks: Data Edition
Oracle SQL Developer Tips and Tricks: Data Edition
Jeff Smith4.3K views
Change Management for Oracle Database with SQLcl by Jeff Smith
Change Management for Oracle Database with SQLcl Change Management for Oracle Database with SQLcl
Change Management for Oracle Database with SQLcl
Jeff Smith5.1K views
Oracle SQLcl: Formatting your Query Results by Jeff Smith
Oracle SQLcl: Formatting your Query ResultsOracle SQLcl: Formatting your Query Results
Oracle SQLcl: Formatting your Query Results
Jeff Smith5.1K views
Oracle SQL Developer Data Modeler - for SQL Server by Jeff Smith
Oracle SQL Developer Data Modeler - for SQL ServerOracle SQL Developer Data Modeler - for SQL Server
Oracle SQL Developer Data Modeler - for SQL Server
Jeff Smith2.8K views
Oracle SQL Developer: You're Doing it Wrong! by Jeff Smith
Oracle SQL Developer: You're Doing it Wrong!Oracle SQL Developer: You're Doing it Wrong!
Oracle SQL Developer: You're Doing it Wrong!
Jeff Smith1.7K views
Social Media - Why a Database Person Should Care by Jeff Smith
Social Media  - Why a Database Person Should CareSocial Media  - Why a Database Person Should Care
Social Media - Why a Database Person Should Care
Jeff Smith1K views
Oracle SQL Developer Reports by Jeff Smith
Oracle SQL Developer ReportsOracle SQL Developer Reports
Oracle SQL Developer Reports
Jeff Smith2.9K views
Oracle SQL Developer: 3 Features You're Not Using But Should Be by Jeff Smith
Oracle SQL Developer: 3 Features You're Not Using But Should BeOracle SQL Developer: 3 Features You're Not Using But Should Be
Oracle SQL Developer: 3 Features You're Not Using But Should Be
Jeff Smith3.1K views
PL/SQL All the Things in Oracle SQL Developer by Jeff Smith
PL/SQL All the Things in Oracle SQL DeveloperPL/SQL All the Things in Oracle SQL Developer
PL/SQL All the Things in Oracle SQL Developer
Jeff Smith1.9K views
Debugging PL/SQL with Oracle SQL Developer by Jeff Smith
Debugging PL/SQL with Oracle SQL DeveloperDebugging PL/SQL with Oracle SQL Developer
Debugging PL/SQL with Oracle SQL Developer
Jeff Smith20.1K views
All of the Performance Tuning Features in Oracle SQL Developer by Jeff Smith
All of the Performance Tuning Features in Oracle SQL DeveloperAll of the Performance Tuning Features in Oracle SQL Developer
All of the Performance Tuning Features in Oracle SQL Developer
Jeff Smith17.9K views
If You Oracle Then You Should Twitter Too by Jeff Smith
If You Oracle Then You Should Twitter TooIf You Oracle Then You Should Twitter Too
If You Oracle Then You Should Twitter Too
Jeff Smith3.2K views
My Favorite Oracle SQL Developer Data Modeler Features by Jeff Smith
My Favorite Oracle SQL Developer Data Modeler FeaturesMy Favorite Oracle SQL Developer Data Modeler Features
My Favorite Oracle SQL Developer Data Modeler Features
Jeff Smith1.4K views
Oracle SQL Developer Data Modeler - Version Control Your Designs by Jeff Smith
Oracle SQL Developer Data Modeler - Version Control Your DesignsOracle SQL Developer Data Modeler - Version Control Your Designs
Oracle SQL Developer Data Modeler - Version Control Your Designs
Jeff Smith18.5K views
Dimensional modeling in oracle sql developer by Jeff Smith
Dimensional modeling in oracle sql developerDimensional modeling in oracle sql developer
Dimensional modeling in oracle sql developer
Jeff Smith33.2K views
Oracle SQL Developer version 4.0 New Features Overview by Jeff Smith
Oracle SQL Developer version 4.0 New Features OverviewOracle SQL Developer version 4.0 New Features Overview
Oracle SQL Developer version 4.0 New Features Overview
Jeff Smith9.9K views
Oracle SQL Developer Top 10 Tips & Tricks by Jeff Smith
Oracle SQL Developer Top 10 Tips & TricksOracle SQL Developer Top 10 Tips & Tricks
Oracle SQL Developer Top 10 Tips & Tricks
Jeff Smith31.9K views
Oracle SQL Developer Tips & Tricks by Jeff Smith
Oracle SQL Developer Tips & TricksOracle SQL Developer Tips & Tricks
Oracle SQL Developer Tips & Tricks
Jeff Smith39K views

Recently uploaded

Igniting Next Level Productivity with AI-Infused Data Integration Workflows by
Igniting Next Level Productivity with AI-Infused Data Integration Workflows Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows Safe Software
91 views86 slides
Combining Orchestration and Choreography for a Clean Architecture by
Combining Orchestration and Choreography for a Clean ArchitectureCombining Orchestration and Choreography for a Clean Architecture
Combining Orchestration and Choreography for a Clean ArchitectureThomasHeinrichs1
68 views24 slides
Architecting CX Measurement Frameworks and Ensuring CX Metrics are fit for Pu... by
Architecting CX Measurement Frameworks and Ensuring CX Metrics are fit for Pu...Architecting CX Measurement Frameworks and Ensuring CX Metrics are fit for Pu...
Architecting CX Measurement Frameworks and Ensuring CX Metrics are fit for Pu...NUS-ISS
32 views54 slides
Black and White Modern Science Presentation.pptx by
Black and White Modern Science Presentation.pptxBlack and White Modern Science Presentation.pptx
Black and White Modern Science Presentation.pptxmaryamkhalid2916
14 views21 slides
20231123_Camunda Meetup Vienna.pdf by
20231123_Camunda Meetup Vienna.pdf20231123_Camunda Meetup Vienna.pdf
20231123_Camunda Meetup Vienna.pdfPhactum Softwareentwicklung GmbH
23 views73 slides

Recently uploaded(20)

Igniting Next Level Productivity with AI-Infused Data Integration Workflows by Safe Software
Igniting Next Level Productivity with AI-Infused Data Integration Workflows Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Safe Software91 views
Combining Orchestration and Choreography for a Clean Architecture by ThomasHeinrichs1
Combining Orchestration and Choreography for a Clean ArchitectureCombining Orchestration and Choreography for a Clean Architecture
Combining Orchestration and Choreography for a Clean Architecture
ThomasHeinrichs168 views
Architecting CX Measurement Frameworks and Ensuring CX Metrics are fit for Pu... by NUS-ISS
Architecting CX Measurement Frameworks and Ensuring CX Metrics are fit for Pu...Architecting CX Measurement Frameworks and Ensuring CX Metrics are fit for Pu...
Architecting CX Measurement Frameworks and Ensuring CX Metrics are fit for Pu...
NUS-ISS32 views
Black and White Modern Science Presentation.pptx by maryamkhalid2916
Black and White Modern Science Presentation.pptxBlack and White Modern Science Presentation.pptx
Black and White Modern Science Presentation.pptx
maryamkhalid291614 views
RADIUS-Omnichannel Interaction System by RADIUS
RADIUS-Omnichannel Interaction SystemRADIUS-Omnichannel Interaction System
RADIUS-Omnichannel Interaction System
RADIUS14 views
How to reduce cold starts for Java Serverless applications in AWS at JCON Wor... by Vadym Kazulkin
How to reduce cold starts for Java Serverless applications in AWS at JCON Wor...How to reduce cold starts for Java Serverless applications in AWS at JCON Wor...
How to reduce cold starts for Java Serverless applications in AWS at JCON Wor...
Vadym Kazulkin70 views
Empathic Computing: Delivering the Potential of the Metaverse by Mark Billinghurst
Empathic Computing: Delivering  the Potential of the MetaverseEmpathic Computing: Delivering  the Potential of the Metaverse
Empathic Computing: Delivering the Potential of the Metaverse
Mark Billinghurst449 views
How the World's Leading Independent Automotive Distributor is Reinventing Its... by NUS-ISS
How the World's Leading Independent Automotive Distributor is Reinventing Its...How the World's Leading Independent Automotive Distributor is Reinventing Its...
How the World's Leading Independent Automotive Distributor is Reinventing Its...
NUS-ISS15 views
Emerging & Future Technology - How to Prepare for the Next 10 Years of Radica... by NUS-ISS
Emerging & Future Technology - How to Prepare for the Next 10 Years of Radica...Emerging & Future Technology - How to Prepare for the Next 10 Years of Radica...
Emerging & Future Technology - How to Prepare for the Next 10 Years of Radica...
NUS-ISS15 views
.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV by Splunk
.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV
.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV
Splunk86 views
Understanding GenAI/LLM and What is Google Offering - Felix Goh by NUS-ISS
Understanding GenAI/LLM and What is Google Offering - Felix GohUnderstanding GenAI/LLM and What is Google Offering - Felix Goh
Understanding GenAI/LLM and What is Google Offering - Felix Goh
NUS-ISS39 views
Special_edition_innovator_2023.pdf by WillDavies22
Special_edition_innovator_2023.pdfSpecial_edition_innovator_2023.pdf
Special_edition_innovator_2023.pdf
WillDavies2214 views
TouchLog: Finger Micro Gesture Recognition Using Photo-Reflective Sensors by sugiuralab
TouchLog: Finger Micro Gesture Recognition  Using Photo-Reflective SensorsTouchLog: Finger Micro Gesture Recognition  Using Photo-Reflective Sensors
TouchLog: Finger Micro Gesture Recognition Using Photo-Reflective Sensors
sugiuralab11 views
The Importance of Cybersecurity for Digital Transformation by NUS-ISS
The Importance of Cybersecurity for Digital TransformationThe Importance of Cybersecurity for Digital Transformation
The Importance of Cybersecurity for Digital Transformation
NUS-ISS25 views
Perth MeetUp November 2023 by Michael Price
Perth MeetUp November 2023 Perth MeetUp November 2023
Perth MeetUp November 2023
Michael Price12 views
The details of description: Techniques, tips, and tangents on alternative tex... by BookNet Canada
The details of description: Techniques, tips, and tangents on alternative tex...The details of description: Techniques, tips, and tangents on alternative tex...
The details of description: Techniques, tips, and tangents on alternative tex...
BookNet Canada110 views

REST Enabling your Oracle Database (2018 Update)

  • 1. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | ORDSDatabaseRESTAPI https://oracle.com/rest Jeff Smith Senior Principal Product Manager Jeff.d.smith@oracle.com || @thatjeffsmith Database Tools, Oracle Corp
  • 2. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Not Just THAT SQLDev Guy… • Database Development Tools team • Product manager/story teller • Specialized Database tooling since 2001 • I bother help people online as @thatjeffsmith • Contact me for a free remote presentation for your group/company
  • 3. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Oracle REST Data Services 3 Formerly Known as the APEX Listener
  • 4. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Get audience sympathy/laughing early • I’m gonna need a REST API for all of our Oracle data… • …first thing Monday
  • 5. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Your Requirements • No connections to the DB (directly at least) • No DB authentication (let the app/web tier handle that) • Link driven (stateless) • Plays nice with the rest of the apps – Standard response/error codes – JSON – Well documented
  • 6. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Employees Table => • GET • PUT • POST • DELETE • DESC • DOCS /ords/hr/employees /ords/hr/employees/ /ords/hr/employees/:id
  • 7. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | {JSON} or JavaScript Object Notation • JAY-sun • Not just for JavaScript • Skinnier than XML • Flexible – Easily adapted to represent database objects & data • Link-friendly
  • 8. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | 8 Tabular Nested Hyperlink
  • 9. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | But we never use SQL, only PL/SQL Table APIs! • No worries! • We auto-magically handle PL/SQL too • RPC -> POST via HTTPS /ords/hr/procedureA • Responses & Results (OUTs/RETURNs/REFCURSORs), in {JSON}
  • 10. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Why should a DBA or PL/SQL Dev care about REST? • RESTful web services are a way of providing interoperability between computer systems on the Internet • REST often treated as a Religion, BUT… • …provides a predictable model for delivering services • We aim for pure REST, but don’t let that pursuit get in the way of practicality
  • 11. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | REpresentational State Transfer (REST) It relies on a stateless, client-server, cacheable communications protocol -- and in virtually all cases, the HTTP(S!) protocol is used. REST is an architecture style for designing networked applications. The idea is that, rather than using complex mechanisms such as CORBA, RPC or SOAP to connect between machines, simple HTTP is used to make calls between machines. (rest.elkstein.org) 11
  • 12. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | • Small uniform set of operations: GET, POST, PUT, DELETE (CRUD!) • Small set of uniform status codes URLs & hyperlinks encourage stateless behavior • Text based protocol with simple request/response model REST is Easy
  • 13. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | • 1xx Informational responses. • 2xx Success. • 3xx Redirection. • 4xx Client errors. • 5xx Server errors. About those Codes
  • 14. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | • Model resources, not actions: – GET /ords/hr/employees/ - GOOD – GET /ords/hr/delete_emp/ - BAD – DELETE /ords/hr/employees/97 - GOOD • Uniform operations on all resources: – GET, POST, PUT, DELETE, OPTIONS, HEAD • Stateless requests, state transitions communicated via hyper-links. The Architectural Style of the Web{REST}
  • 15. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Resource Collection Pattern • MASTER RESOURCE: called the Collection URI: https://example.com/ords/hr/employees/ • DETAIL RESOURCE; called the Item URI: https://example.com/ords/hr/employees/:id 15
  • 16. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Method Purpose Classification Database Operation GET Retrieve resource Safe, Idempotent SELECT PUT Create or replace resource Idempotent MERGE, UPDATE DELETE Delete resource Idempotent DELETE POST Anything. Normally create Unsafe INSERT The Verbs
  • 17. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | • Java JEE mid tier application, e.g., WebLogic, Tomcat, Glassfish (deprecated) – Also supported “Standalone” mode • For input, maps/binds URI to SQL and PL/SQL • For output, transforms results to JSON and other formats Oracle REST Data ServicesHTTP(S) client Oracle Database SQLMap & BindURI JSON Transform to JSON SQL Result Set How do we apply this Architectural Style to a DB?
  • 18. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | https://host/ords/human/peeps/10 SELECT … WHERE EMPLOYEE_ID = :id Oracle DB 1. Browser GET request 2. Proxy connect HR, executes ‘peeps’ HANDLER code ORDS Runs in WLS, Tomcat, or as a standalone process Oracle REST Data Services Anatomy of a RESTful Service Transaction
  • 19. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Typical Architecture • Standard webserver layout • Implements Java Servlet • Deploys to WLS, Tomcat, Glassfish • OR Embedded Jetty (standalone) WLS, Glassfish, Tomcat ORDS Apache Static Files -HTML, CSS, JS /hr/emp JSON Binary HTML … HTTP(s) Results JDBC
  • 20. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | And it’s Easy! I had been looking for a chance to perform a POC, so I proposed I just provide him with a couple of web services. In under a day I had functioning web services in place for him to consume. There’s been refinements to them and new ones developed since then. We are now exploring where else we could leverage this technology. - a REAL customer talking about ORDS
  • 21. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | ORDS – How do I get started??? Use SQL Developer to install & run. Use Hands On Labs to learn.
  • 22. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Full Command-Line Interface & PL/SQL API
  • 23. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Enable a Schema • Services are EXECUTED as the REST enabled schema USER … • … via ORDS_PUBLIC_USER Proxy Connect • What your session can see & do = straight forward & predictable • Secured/Authorization outside the database
  • 24. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Develop RESTFul Services: PL/SQL, GUI, or even REST BEGIN ORDS.ENABLE_SCHEMA( p_enabled => TRUE, p_schema => 'ORDS_DEMO', p_url_mapping_type => 'BASE_PATH', p_url_mapping_pattern => 'autodemo', p_auto_rest_auth => FALSE); ORDS.DEFINE_MODULE( p_module_name => 'SPLAT', p_base_path => '/splat/', p_items_per_page => 25, p_status => 'PUBLISHED', p_comments => NULL); ORDS.DEFINE_TEMPLATE( p_module_name => 'SPLAT', p_pattern => 'types', p_priority => 0, p_etag_type => 'HASH', p_etag_query => NULL, p_comments => NULL); ORDS.DEFINE_HANDLER( p_module_name => 'SPLAT', p_pattern => 'types', p_method => 'GET', p_source_type => 'json/query', p_items_per_page => 25, p_mimes_allowed => '', p_comments => NULL, p_source => 'select * from d_types' ); COMMIT; END;
  • 25. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Code and No/Low Code RESTful Service Options  No need to know Java  Database developers (PLSQL & SQL) get started quickly  PL/SQL API  GUI/IDE Support (SQL Developer!)
  • 26. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Manual – You Define Modules/URIs/Handlers/the Code
  • 27. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Automatic  Pick the Database objects to PUBLISH  TABLEs and VIEWs  GET, POST, PUT, DELETE handlers avail for CRUD  Stored Procedures, Functions, Packages (PL/SQL)  POST handler avail for RPC
  • 28. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
  • 29. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Auto enablement of RESTful request modules – User Interface Exposes these operations • Schema level Metadata • Table Metadata • Get ( Select ) • Query ( Filtering/Order/ASOF ) • Insert • Update • Delete • Load CSV
  • 30. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Update a Row 32 METHOD : PUT /:PK REQUEST BODY : JSON RESPONSE: 200 OK • Location (Header) • JSON (Body)
  • 31. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Remote Procedure Call over HTTP(S) via POST ORDS takes parameters as JSON, executes PL/SQL, grabs output, sends back down as JSON OUT INTEGER & SYS_REFCURSOR { "total_payroll": 631230, "peeps_numbers": [ { "id": 81, "name": "Dummy4", "salary": 0, "hire_date": "2017-06-20T13:29:00Z" }, { "id": 65, "name": "Bart", "salary": 0, "hire_date": "2017-06-20T13:29:00Z" }, { "id": 79, … }
  • 32. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Execute PL/SQL TABLE API Execute, REFCURSOR RETURN
  • 33. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Ok, our boss came back with more details • Funny pictures on the internet • Put them in a table • Show me a list of the funnies • Let me see them on demand
  • 34. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Scenario: Our Table
  • 35. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | The RESTful Service (POST – PL/SQL Block)
  • 36. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | The POST Call (Postman)
  • 37. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("http://localhost:8080/ords/hr/test2/media") .post(null) .addHeader("content-type", "image/png") .addHeader("title", "18.2 tease") .addHeader("cache-control", "no-cache") .addHeader("postman-token", "86b344ef-2aba-12e2-8788-4c316bc866e3") .build(); Response response = client.newCall(request).execute(); The POST Call (Java)
  • 38. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | The POST Call (cURL) curl -X POST http://localhost:8080/ords/hr/test2/media -H 'cache-control: no-cache’ -H 'content-type: image/png' -H 'postman-token: bf2bcb0d-8759-fc70-98ff-c3633b418dcb' -H 'title: 18.2 tease'
  • 39. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | The Response
  • 40. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | How About API to get all the images? select title ,content_type ,id "$uri" from gallery order by title
  • 41. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Module URI Templates /ords/hr/employees /ords/hr/employees/ /ords/hr/employees/:id SQL & PLSQL
  • 42. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | {Swagger} Requirement: WELL DOCUMENTED
  • 43. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Quick, Check in to Source Control!
  • 44. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Mission Accomplished • Link driven (stateless) • Plays nice with others – Standard response/error codes – JSON – Well documented BONUS! – Supported by Oracle – No additional cost
  • 45. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | • Disabled by default • AUTH by user with sql dev priv or via DB curl -X POST http://localhost:8080/ords/hr/_/sql -H 'authorization: Basic SFI6b3JhY2xl’ -H 'cache-control: no-cache’ -H 'content-type: application/sql’ -H 'postman-token: 23a49622-a195-cb76-0606-358f3e371cdd’ -d 'SELECT first_name, last_name, department_name FROM hr.employees, hr.departments where employees.department_id = departments.department_id' Execute SQL via POST New for 17.4 - _/sql/
  • 46. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | ORDS is Flexible - Security Caveats • Almost all dev/demo/blog is done with security off & with HTTP • Always, always, always secure REST services and run with HTTPS See Scott Spendolini’s slides on Securing your REST APIs
  • 47. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | First Party Authentication • Oracle REST Data Services specific solution • Only available to the author of the API, application must be deployed on same origin as API • https://example.com/api & https://example.com/app ✓ • https://api.example.com & https://app.example.com ✗ • User enters credentials in sign-in form, ORDS issues cookie, cookie is only validated by ORDS if the request is determined to originate from the from the same origin as the REST Service. 49
  • 48. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | About OAuth 2.0 • IETF standard for securing access to REST APIs • Comes in two forms: • Two Legged - For Business to Business, server to server applications • Example: Sync HR data between internal applications • Three Legged - For Business to Consumer, app to end-user applications • Example: Share subset of HR data with external benefits provider after employee approves access. • Third party registers client, issued credentials, uses credentials to acquire access token, uses access token with request to prove authorization 50
  • 49. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | External Authentication • Comes in many flavors, for example: • Oracle Access Manager - SSO cookie at Oracle OHS server level authenticates users stored in Oracle Identity Manager • ORDS does not perform authentication, just authorization. • Usually relies on HTTP cookies, need to restrict CORS allowed Origins to avoid CSRF 51
  • 50. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Coming Later This Year • Available for On-Premises and Oracle Cloud DB Services • Supports 11gR2 and higher • Supports ‘Classic’ & Multitenant Architectures • Supports RAC & Exadata • Optional REST API for managing your Oracle Database
  • 51. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | In the year 2018…REST APIs for the Database! Listener – Start, stop, status Database Ops Start, stop, alerts, INIT params, rotate TDE keys PDB Ops Start, stop, create, clone, drop, plug, unplug OS Stats Memory, cpu, processes Reporting Backups, sessions, waits, ASH, AWR, locks, V$LONG_OPS, RTSM
  • 52. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Clone a PDB, Get a list of Wait Events, Read the Alert Log…
  • 53. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Plus SQL Developer Web • Optional! • 11gR2 and higher • DBA screens • SQL Worksheet – Run SQL, scripts, explain plan, autotrace, SQL history, formatter, insight – Create & Edit TABLE dialogs • RE Schemas to a Relational Diagram/DD Reports Cloud First (Live in DBaaS NOW), On-Premises Later this Year
  • 54. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | SQLDev Web – the Demo Runs out of ORDS
  • 55. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Thanks! Questions? Resources • Blogs • Videos • GitHub Examples • Articles – UKOUG Scene Why REST, and What’s in it or Me? – Oracle Mag AUTO REST & REST Enabled SQL

Editor's Notes

  1. There have been many many remote procedure call/distributed communication protocols. Many have been very deeply specified with thousands of pages of specifications, but in the end the industry moved away from these protocols to a much looser concept. So loose it cannot even deemed a protocol, rather REST is referred to as an architectural style. REST won not by being the most advanced, or the most capable, or the most efficient, but by being the easiest to get to grips with. Which is both a blessing and a curse. The world is full of less than optimal REST APIs. Because REST is so approachable folks quickly move to building and shipping APIs without considering some of the more thorny issues that every distributed application has to deal with How to manage concurrency, how to deal with lost updates, co-ordinate transactions How to deal with unavailability How to deal with massive scale Oracle REST Data Services is designed to deal with many of these issues, we’ve done the hard thinking and chosen approaches to deal with these issues so developers using ORDS don’t need to worry about them so much. I want to draw a comparison between REST and another foundational technology, UNIX. When I think of UNIX I picture big air conditioned rooms in data centres full of big iron servers. But that’s not the reality of UNIX today. It’s not just data centres and backend servers. The reality is UNIX is all around you, you wear it on your wrist, you carry it in your pocket, it powers the movies you watch when sat on an aeroplane, it controls the car you drive, it is literally everywhere. It is part of the fabric of our reality, but it’s not something out there in front of you. It’s a building block, something atop which much of the rest of the technology in our lives is built upon. I’m sure everyone in this room knows how to get around in UNIX, I’m sure that wasn’t always the case, there was a time when all I knew was MS-DOS and Windows. UNIX was a foreign land, and even seemed like something that was fading away under the march of Windows, but that time was so long ago and now I can’t picture a future where knowing and being comfortable using UNIX won’t be a valuable skill for at least another decade or two. I feel REST is following a similar trajectory. It is almost as old as the HTTP protocol itself, and it’s popularity and ubiquity has taken a considerable amount of time to build, but now that it’s value has been recognised, I don’t see it’s utility being displaced until the next paradigm shift in computing technology occurs. It has become one of the building blocks we take for granted. And thus everyone needs to know and understand REST and more importantly every piece of technology involved in distributed computing needs to be a good and competent REST citizen.
  2. A typical REST resource doesn’t just contain the tabular data typical of a relational model. It will often also include: nested data structures (e.g. categories above) Hyperlinks (e.g. the replies link above)
  3. There have been many many remote procedure call/distributed communication protocols. Many have been very deeply specified with thousands of pages of specifications, but in the end the industry moved away from these protocols to a much looser concept. So loose it cannot even deemed a protocol, rather REST is referred to as an architectural style. REST won not by being the most advanced, or the most capable, or the most efficient, but by being the easiest to get to grips with. Which is both a blessing and a curse. The world is full of less than optimal REST APIs. Because REST is so approachable folks quickly move to building and shipping APIs without considering some of the more thorny issues that every distributed application has to deal with How to manage concurrency, how to deal with lost updates, co-ordinate transactions How to deal with unavailability How to deal with massive scale Oracle REST Data Services is designed to deal with many of these issues, we’ve done the hard thinking and chosen approaches to deal with these issues so developers using ORDS don’t need to worry about them so much. I want to draw a comparison between REST and another foundational technology, UNIX. When I think of UNIX I picture big air conditioned rooms in data centres full of big iron servers. But that’s not the reality of UNIX today. It’s not just data centres and backend servers. The reality is UNIX is all around you, you wear it on your wrist, you carry it in your pocket, it powers the movies you watch when sat on an aeroplane, it controls the car you drive, it is literally everywhere. It is part of the fabric of our reality, but it’s not something out there in front of you. It’s a building block, something atop which much of the rest of the technology in our lives is built upon. I’m sure everyone in this room knows how to get around in UNIX, I’m sure that wasn’t always the case, there was a time when all I knew was MS-DOS and Windows. UNIX was a foreign land, and even seemed like something that was fading away under the march of Windows, but that time was so long ago and now I can’t picture a future where knowing and being comfortable using UNIX won’t be a valuable skill for at least another decade or two. I feel REST is following a similar trajectory. It is almost as old as the HTTP protocol itself, and it’s popularity and ubiquity has taken a considerable amount of time to build, but now that it’s value has been recognised, I don’t see it’s utility being displaced until the next paradigm shift in computing technology occurs. It has become one of the building blocks we take for granted. And thus everyone needs to know and understand REST and more importantly every piece of technology involved in distributed computing needs to be a good and competent REST citizen.
  4. The Collection URI is the entry point to the API, it’s function is to list all the items in the collection and provide an endpoint for creating new resources. It is typically a concrete URI, without any wildcarding/patterning. The Item URI is parameterized/wildcarded, it represents the naming pattern for all Item Resources in the Collection. It’s function is to provide the detail of a resource, along with the means to update and/or delete the resource.
  5. New with REST Data services 3.0 it does not require APEX to define your REST Data services. Oracle currently distributes “Oracle APEX Listener”, which will be renamed to Oracle REST Data Services. Delivered with Database 12.1.0.2 Java Based plugin replacement for Apache mod_plsql Formally known as Oracle APEX listener available on OTN Available today on our Database Cloud Schema Service
  6. Perform a GET on the Collection URI to retrieve the resource In ORDS the response is a JSON document with two main elements: items: lists the items in the collection links: provides hyperlinks to help navigate the collection (next) and to identify the URI to use to POST new Items to the Collection