opal consulting – oracle apex knowhow seit 2006 ......added fop 2.0 2012 oauth2 support,...

63

Upload: others

Post on 15-Mar-2021

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support
Page 2: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

OracleORDS101-JumpstartyourDevelopment

DietmarAustOpal-Consul;ng,Kölnwww.opal-consul;ng.de

Page 3: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

► Dipl.-Inform.DietmarAust,FreelanceConsultant▪  Master'sDegreeinComputerScience(MSCS)

► BuildingOraclebasedWebApplica;onssince1997▪  Portal,Forms,Reports,OWAToolkit,nowAPEX!

► 1997-2000:ConsultantatOracleGermany

► Since09/2000:FreelanceConsultant,Since2006–APEXonly!

► Blog:h\p://daust.blogspot.com/

► RegularpresenteratOracleconferences(ODTUG,DOAG,OOW)

► AuthoroftheJasperReportsIntegra;ontoolkit▪  h\p://www.opal-consul;ng.de/tools

DietmarAust

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 3

Page 4: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

DietmarAust

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 4

► 2015DatabaseDeveloperoftheyearintheORDScategory

Page 5: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 5

Agenda

Page 6: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

► WhatisREST?

► WhatisORDS?▪  ComponentsandArchitecture

► ManagementoftheRESTdefini;onswithSQLDeveloperandtheAPI

► UseCases▪  Naviga;on/Links/Filter/Sor;ng/Parameter(Input/Output)

► Security▪  Authen;ca;onandAuthoriza;on

Agenda

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 6

Page 7: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 7

WhatisREST?

Page 8: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

► Itisanarchitecturalstyleforapplica;ons,neitheraprotocolnoraW3Cstandard

► REST:=Representa;onalStateTransfertermcoinedin2000byRoyFielding▪  h\ps://en.wikipedia.org/wiki/Representa;onal_state_transfer

► Characteris;cs:▪  Stateless(100%oftheapplica;onstateismanagedbytheclient)▪  Basedontheh\pprotocol▪  Highlyscaleable▪  RESTusesh\pmethods(POST,PUT,GET,DELETE,…)toimplementCRUD

opera;ons(Create/Read/Update/Delete)

► Why?▪  Lightweightalterna;vetoRPC(RemoteProcedureCalls)andotherWebServices

(SOAP,WSDL,…)▪  IncreasinglypopularthroughAPIsprovidedbyGoogle,Facebook,Twi\erand

others.

WhatisREST?Defini;on

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 8

Page 9: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

► Ressourcesprovideservicesandareuniquelyiden;fyable▪  h\p://api.example.com/customers/▪  h\p://api.example.com/customers/1234▪  h\p://api.example.com/customers/1234/orders/

► Mul;pleURIscanpointtothesameressource:▪  h\p://example.org/NewOrleans/traffic/I10▪  h\p://example.org/traffic/NewOrleans/I10

► Wemodeltheressource,nottheac;on!▪  Useofnounsinpluralform▪  PUTh\p://example.com/accounts/12345▪  PUTh\p://example.com/accounts/edit/12345▪  POSTh\p://example.com/accounts/▪  POSTh\p://example.com/accounts/addaccount

WhatisREST?Ressources

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 9

Page 10: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

► Methodsimplementaspecificopera;on▪  Uniformopera;onsforallressources▪  GET,POST,PUT,DELETE,OPTIONS,HEAD

► Weuseveryfewverbstooperateonmanydifferentnouns.

WhatisREST?Methods

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 10

Page 11: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

► Communica;onofsuccessanderrormessagesthroughstandardHTTPResponsecodes1xx,2xx,3xx,4xx,5xx▪  h\p://www.restapitutorial.com/

h\pstatuscodes.html#

WhatisREST?Methods

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 11

Page 12: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

► Representa;onsdeterminehowtheanswerwillbeinterpreted▪  XMLrepresenta;onusingmime-type:text/xml▪  JSONrepresenta;onusingmime-type:

applica;on/json

► Asingleressourcecanprovidemul;pledifferentrepresenta;ons▪  JSON,XML,CSV…▪  Therightrepresenta;onisac;vely„nego;ated“▪  Theclientsendsalistofpreferredmime-types–

theserverrespondswiththebestanswerandsendsthechosenmime-typeinthe„Content-Type“h\pheader.

WhatisREST?Representa;ons

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 12

Page 13: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 13

WhatisORDS?

Page 14: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

► OracleRestDataServices(ORDS)▪  MiddlewareJ2EEcomponentinthe

applica;onserver(WLS,Glassfish,Tomcat)▪  TranslatesURLsintoacallinthedatabase

(eitherselectorstoredprocedurecall)

► Threemajorusecases▪  SupportforOWAtoolkitapplica;ons(will

replacemod_plsql)▪  OracleApplica;onExpress(APEX)▪  RESTfulWebservices

WhatisORDS?

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 14

Page 15: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

WhatisORDS?TheHistory

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 15

Version Date Description

1.0 2010 First release as Oracle APEX Listener with with support for OWA toolkit used by APEX

1.1 2011 First release with REST support for JSON, Microdata, CSV, Pagination. Also added FOP

2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration

2.0.5 2013 Added support for Oracle Pluggable Databases (12c)

2.0.6 2014 Renamed to Oracle REST Data Services to emphasize REST commitment, integration with APEX 4.2 in SQL Workshop

2.0.8 2014 Added REST Filtering

3.0.0 2015 REST AutoTable, NoSQL, DB12 JSON, Bulk loading over REST,…

Page 16: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

ORDSiscurrentlytransi2oningawayfromthedependencyonAPEX

► ORDSrequiresarepositorytostorethewebservicedefini;ons

WhatisORDS?APEXRESTvs.ORDS_METADATARESTSupport

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 16

► ORDS2.0

► Schemas▪  APEX_040200/APEX_050000▪  APEX_LISTENER▪  APEX_REST_PUBLIC_USER

► Configurationusing▪  APEXSQLWorkshop▪  SQLDeveloper

► ORDS3.0

► Schemas▪  ORDS_METADATA▪  ORDS_PUBLIC_USER

► Configurationusing▪  SQLDeveloper▪  PL/SQLAPI

Page 17: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

► APEXRESTsupportintheAPEXSQLWorkshop

WhatisORDS?APEXRESTvs.ORDS_METADATARESTSupport

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 17

Page 18: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

► Twodifferentrepositories:APEXRESTandORDS_METADATAREST▪  TypicallybothareinstalledwhenusingAPEX5▪  APEX5requiresthatyourunapex_rest_config.sqlwhichcreatesAPEX_LISTENER

andAPEX_REST_PUBLIC_USER

► TheFuture?▪  NewfeatureswillonlybeaddedtoORDS_METADATAREST

► InwhichrepositorydoIcreatethewebservice?▪  APEXREST

−  Integra;onwithAPEXSession

▪  ORDS_METADATAREST−  Allnewfunc;onalityisaddedtothenewrepository(only!)

► Inthispresenta;onwewillfocusonthefeaturesavailableinORDS_METADATARESTSupportwithORDS3.0

WhatisORDS?APEXRESTvs.ORDS_METADATARESTSupport

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 18

Page 19: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

► HowisaRESTwebservicecallactuallyprocessed?

WhatisORDS?Architecture

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 19

http://myhost/ords/employees/7536SELECT*FROMEMPWHEREEMPNO=:b1

Oracle DB

3. SQL Call over JDBC

Browser

1. Browser RESTful get request

2. ORDS maps to “EMPLOYEES” SQL

4. DB returns JDBC Results

5. JSON

ORDS Runs in WLS, Tomcat, Glassfish container

Oracle REST Data Services

Page 20: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

► Connec;onPooling▪  ThetargetOracleuser(schema)isac;vatedusingaProxyConnect▪  TheuserORDS_PUBLIC_USERconnecttothedatabaseandthenswitchesitsiden;tyto

thetargetOracleuser▪  Thusweneedfewerconnec;onpoolsandeachconnec;onpoolbecomessmallersince

mul;pleOracleuserscanbeservedwiththesameconnec;onpool▪  EachSQLandPL/SQLstatementisexecutedusingthetheoriginalusersession

WhatisORDS?Architecture

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 20

Page 21: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 21

ManagementoftheRESTdefini;onswithSQLDeveloperandtheAPI

Page 22: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

► ManagementoftheRESTdefini;onswithSQLDeveloper

RESTDefini;onsManagementwithSQLDeveloper

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 22

Page 23: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

► ManagementoftheRESTdefini;onswithSQLDeveloper

RESTDefini;onsManagementwithSQLDeveloper

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 23

Oracle REST Data Services

SQL Developer

http/https

APEX_050000

ORDS_METADATA

jdbc

jdbc authenticate and authorize user

Local filestore, Admin user needs role „SQLDeveloper“

Page 24: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

► ManagementoftheRESTdefini;onswithSQLDeveloper

► Createuseroncommandline

RESTDefini;onsManagementwithSQLDeveloper

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 24

Schema/Workspace will decide between APEX REST and ORDS REST

##UsertomanageRESTdefinitionsinSQLDeveloperjava-jarords.waruserdietmar.aust"SQLDeveloper”

Page 25: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

► RESTcomponents▪  Modules

−  ResourceTemplates

−  Methods/Handlers(GET,PUT,POST,DELETE)

RESTDefini;onsModules,RessourceTemplatesandHandlers

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 25

Page 26: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 26

Demo

Page 27: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

► ManagementthroughthePL/SQLAPI

► Simplefile…containsallresourcetemplatesandmethodsforamoduleinasingleplace

► Firstwedeletetheexis;ngdefini;onandthenwerecreateitfromscratch

► Verywellsuitedforscriptbaseddeployment

► APIreference(PackageORDS):h\p://docs.oracle.com/cd/E56351_01/doc.30/e56293/ords_ref.htm#AELIG90180

► UsePackageORDSinsteadofORDS_SERVICESinthefuture!!!

RESTDefini;onsManagementthroughtheAPI

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 27

Page 28: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

► ResourceTemplate–types▪  SQLQuery(legacy)(source_type_query)▪  SQLQuery(onerow)(legacy)(source_type_query_one_row)▪  Feed(source_type_feed)▪  Collec;on(source_type_collec;on_feed)▪  Collec;onItem(source_type_collec;on_item)▪  PL/SQL(source_type_plsql)

−  Generateeverythingmanuallymyself

▪  Media(source_type_media)−  Binaryrepresenta;ons

RESTDefini;onsResourceTemplate-Types

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 28

Page 29: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

► ResourceTemplate–Type:SQLQuery(legacy)(source_type_query)▪  Containsalinktoitself

RESTDefini;onsResourceTemplate-Types

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 29

selectemp.*fromemp

Page 30: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

► ResourceTemplateType:SQLQuery(onerow)(legacy)(source_type_query_one_row)

RESTDefini;onsResourceTemplate-Types

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 30

selectemp.*fromempwhereempno=:empno

Page 31: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

► ResourceTemplate–TypeSQL:Feed(source_type_feed)

RESTDefini;onsResourceTemplate-Types

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 31

selectemp.*fromemp

Page 32: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

► ResourceTemplate–TypeSQL:Collec;on(source_type_collec;on_feed)

► Completeincl.naviga;onlinks:▪  Self▪  Describedby▪  First(onlybypagina;onorlimit)▪  Next(onlybypagina;onorlimit)▪  Previous(onlybypagina;onorlimit)

RESTDefini;onsResourceTemplate-Types

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 32

selectemp.*fromemp

Page 33: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

► ResourceTemplate–TypeSQL:Collec;onItem(source_type_collec;on_item)▪  Containsalinktothecollec;onitself

RESTDefini;onsResourceTemplate-Types

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 33

selectemp.*fromempwhereempno=:empno

Page 34: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 34

UseCases

Page 35: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

Firststep:EnableRESTcapabili;esforaschemainthedatabase

► UsingtheGUI(right-clickontheconnec;on)

► Usingthecommandline/API

UseCasesEnableRESTinSchema

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 35

BEGINORDS.ENABLE_SCHEMA(p_enabled=>TRUE,p_schema=>'ORDSTEST',p_url_mapping_type=>'BASE_PATH',p_url_mapping_pattern=>'ordstest',p_auto_rest_auth=>FALSE);COMMIT;END;

Page 36: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

Implementnaviga;onlinkstonavigatebetweenthedifferentressources

► Linksusedfor:▪  Linktothecurrentrow▪  Linktoanimageoranembeddedlist(ressourceorderscancontainalisttothe

relatedorderitems)▪  Linktotheparent▪  Linktoother“siblings”usingrela;vepaths,e.g.../..

UseCasesNaviga;onandLinks

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 36

Page 37: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 37

Demo

Page 38: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

► Inputparameters▪  Implicit

−  AllvariablesthatarepassedintheURLorinthecontentbody

−  :content_type(varchar2,z.B.applica;on/json)

−  :body(alsBLOB)

▪  Explicit(usingdeclatra;veparameters)−  Allregularh\pheadervariables

−  AllvariablesthatarepassedintheURLorinthecontentbody

UseCasesParameter

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 38

Page 39: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

► Outputparameters▪  Explicit

−  Returnaresponsebysewngasimplebindvariablewhichisthenconvertedautoma;callytoJSONbyORDS

−  Setanh\pResponseCode(Pseudo-Header:X-APEX-STATUS-CODE),e.g.201,403oruseowa_u;l.set_status_line()(3.0.5andhigher)

−  RedirecttoadifferentURL(Pseudo-Header:X-APEX-FORWARD)

−  Setah\pheadervariable

UseCasesParameter

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 39

Page 40: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

ModifyressourcesusingPOST,PUTandDELETE

► Createanewressource(POST)

► Updatearessource(PUT)

► Deletearessource(DELETE)

UseCasesModifyressourcesusingPOST,PUTandDELETE

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 40

Demo

Page 41: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

► RendereverythingmanuallywithPL/SQLyourself▪  GETwithTypPL/SQL▪  UseOWAToolkittowriteitout

−  APEX_JSON,PL/JSON

−  12cJSONFunk;onen

UseCasesPL/SQLResourceTemplate–implementeverythingyourself

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 41

Page 42: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

► Displayanimage▪  GETresourcetemplate(typeMediaressource)

UseCasesMedia-Ressourcen

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 42

selectmimetype,product_imagefromdemo_product_infowhereproduct_id=to_number(:product_id)

Page 43: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

► Pagina;on▪  Allowstopaginatethroughtheresultset▪  Onlyapplicableforhandlertypecollec;on(source_type_collec;on_feed)▪  h\p://docs.oracle.com/cd/E56351_01/doc.30/e56293/develop.htm#BABIHBDH▪  Pa\ern:GEThttp://<HOST>:<PORT>/ords/<SchemaAlias>/

<ObjectAlias>/?offset=<Offset>&limit=<Limit>▪  Alsocreatesthelinks“NEXT”,“PREVIOUS”und“FIRST”mit

► Example:

UseCasesPagina;on

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 43

Page 44: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

► ResultSetFiltering▪  QuerySyntaxtofilteracollec;on▪  Onlyapplicableforhandlertypecollec;on(source_type_collec;on_feed)▪  h\p://docs.oracle.com/cd/E56351_01/doc.30/e56293/develop.htm#AELIG90104

► Sor;ng/OrderBy▪  QuerySyntaxtosortacollec;on▪  Onlyapplicableforhandlertypecollec;on(source_type_collec;on_feed)▪  h\p://docs.oracle.com/cd/E56351_01/doc.30/e56293/develop.htm#AELIG90104

UseCasesFilterandSort

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 44

Page 45: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 45

Demo

Page 46: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 46

Security

Page 47: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

► Differentwaysofauthen;ca;ngthecurrentuser▪  Authen;ca;onusingtheintegratedpasswordstore(“creden;als”file–just

recommendedfordevelopmentandtestenvironments)▪  Authen;ca;onusingtheapplica;onserver(authen;ca;onisdelegated,e.g.to

Glassfish)

► Authen;ca;onusingOAUTH2▪  Establishedstandard–usedwidely▪  Basicallycontrolsa“session”betweenclient/serverandyous;llneedto

authen;catewiththeappserver

► MoredetailstousingOAUTH2withORDS:Ar;clesfromCarstenCzarski(inGerman,butcanbetranslatedusingGoogleTranslator)▪  h\p://json-rest-oracledb.blogspot.de/2015/12/vorher-anmelden-bi\e-

authen;fizierung.html▪  h\p://json-rest-oracledb.blogspot.de/2016/01/ords-und-3-legged-oauth-so-

gehts.html

Security

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 47

Page 48: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

► Authoriza;on:=Protectaccesstoressourcesforcertainuserroles

► CreateaROLEfirst(onlypossiblethroughtheAPI)

► CreateaprivilegetoprotectafullmoduleorjustaURIpa\ern

► Cannotrequireprotec;onjustforaspecificmethod,e.g.limitaccesstoPUT,POST,DELETEandallowGETforeverybody.▪  Perhapsusingtwomodules:

−  /public/departments/(implementGEThandler)

−  /protected/departments/(implementPOST,PUT,DELETEhandler)

Security

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 48

Page 49: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

Security

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 49

Page 50: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 50

Demo

Page 51: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 51

Auto-REST

Page 52: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

QuicklyAuto-RESTenableadatabasetableorview

► Pros:▪  Fastandeasy▪  CandosomecleverthingsusingINSTEAD_OFtriggersontheview

► Cons:▪  Can’tusetheauthen;cated:current_uservariabletofigureouttheuseriden;ty

whichisrequiredforloggingpurposes

Auto-REST

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 52

Page 53: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

EnableRESTcapabili;esforatableorview

► UsingtheGUI(right-clickonthetable/view)▪  „EnableRESTService“

► Usingthecommandline/API

UseCasesEnableRESTinSchema

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 53

BEGINORDS.ENABLE_OBJECT(p_enabled=>TRUE,p_schema=>'ORDSTEST',p_object=>'DEPT',p_object_type=>'TABLE',p_object_alias=>'dept',p_auto_rest_auth=>FALSE);COMMIT;END;

Page 54: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 54

Demo

Page 55: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 55

Debugging/Troubleshoo;ng

Page 56: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

► Displayerrormessagesdirectlyinthebrowser(onlyuseondevelopment/testenvironments,notproduc;on!)▪  Modifydefault.xml

► Fullloggingwithalldetailsusingjava.u;l.logging▪  h\ps://cdivilly.wordpress.com/2013/03/08/configuring-logging-in-oracle-

applica;on-express-listener-2-0-1/

Debugging/Troubleshoo;ng

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 56

<entrykey="debug.debugger">true</entry><entrykey="debug.printDebugToScreen">true</entry>

Page 57: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 57

Tools

Page 58: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

► Commandlinetool:curl-h\ps://curl.haxx.se/

► AdvancedRESTClient(forGoogleChrome)▪  h\ps://chrome.google.com/webstore/detail/advanced-rest-client/

hgmloofddffdnphfgcellkdyyjeloo

► PLSQLlogger▪  h\ps://github.com/OraOpenSource/Logger

Tools

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 58

Page 59: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 59

FurtherReading

Page 60: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

► Slidestodownload:h\p://daust.blogspot.de

► Wikipedia:h\p://en.wikipedia.org/wiki/Representa;onal_State_Transfer

► REST–APIDesign▪  h\p://www.vinaysahni.com/best-prac;ces-for-a-pragma;c-reszul-api▪  h\ps://www.thoughtworks.com/de/insights/blog/rest-api-design-resource-

modeling▪  h\p://blog.octo.com/en/design-a-rest-api/▪  h\ps://reszul-api-design.readthedocs.org/en/latest/intro.html▪  h\p://blog.mwaysolu;ons.com/2014/06/05/10-best-prac;ces-for-be\er-reszul-

api/

► CarstenCzarskiBlogaboutREST:h\p://json-rest-oracledb.blogspot.de/(canbetranslatedusinggoogletranslator)

FurtherReading

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 60

Page 61: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

► RESTfulWebServices,byLeonardRichardsonandSamRuby,availablefromO’ReillyMediaath\p://oreilly.com/catalog/9780596529260/

► Thesource:h\p://www.ics.uci.edu/~fielding/pubs/disserta;on/top.htmmostlychapters5and6

► Anice14minutevideointroduc;on:h\p://www.youtube.com/watch?v=YCcAE2SCQ6k

► HTTPspec:h\p://tools.iez.org/html/rfc2616

► URIspec:h\p://tools.iez.org/html/rfc3986

► JSONformat:h\p://json.org/

WeitereInforma;onsquellen

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 61

Page 62: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support

Contact

29.06.2016 Oracle ORDS 101 - Jumpstart your Development Page 62

DietmarAustOpal-Consul;ng,Kölnwww.opal-consul;ng.dedaust.blogspot.comdietmar.aust@opal-consul;ng.de

Page 63: Opal Consulting – Oracle APEX KnowHow seit 2006 ......added FOP 2.0 2012 OAuth2 support, Integrated with APEX, Multi Database, SQL Developer integration 2.0.5 2013 Added support