oracle ords – quickstart für entwickler · oracle ords – quickstart für entwickler 26.04.2016...
TRANSCRIPT
![Page 1: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/1.jpg)
OracleORDS–QuickstartfürEntwickler
DietmarAustOpal-Consul=ng,Kölnwww.opal-consul=ng.de
![Page 2: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/2.jpg)
► 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
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 2
![Page 3: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/3.jpg)
DietmarAust
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 3
► 2015DatabaseDeveloperoftheyearintheORDScategory
![Page 4: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/4.jpg)
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 4
Agenda
![Page 5: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/5.jpg)
► WhatisREST?
► WhatisORDS?▪ ComponentsandArchitecture
► ManagementoftheRESTdefini=onswithSQLDeveloperandtheAPI
► UseCases▪ Naviga=on/Links/Filter/Sor=ng/Parameter(Input/Output)
► Security▪ Authen=ca=onandAuthoriza=on
Agenda
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 5
![Page 6: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/6.jpg)
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 6
WhatisREST?
![Page 7: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/7.jpg)
► 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
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 7
![Page 8: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/8.jpg)
► 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
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 8
![Page 9: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/9.jpg)
► Methodsimplementaspecificopera=on▪ Uniformopera=onsforallressources▪ GET,POST,PUT,DELETE,OPTIONS,HEAD
WhatisREST?Methods
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 9
![Page 10: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/10.jpg)
► Communica=onofsuccessanderrormessagesthroughstandardHTTPResponsecodes1xx,2xx,3xx,4xx,5xx▪ h\p://www.restapitutorial.com/
h\pstatuscodes.html#
WhatisREST?Methods
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 10
![Page 11: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/11.jpg)
► 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
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 11
![Page 12: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/12.jpg)
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 12
WhatisORDS?
![Page 13: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/13.jpg)
► OracleRestDataServices(ORDS)▪ MiddlewareJ2EEcomponentinthe
applica=onserver(WLS,Glassfish,Tomcat)▪ TranslatesURLsintoacallinthedatabase
(eitherselectorstoredprocedurecall)
► Threemajorusecases▪ SupportforOWAtoolkitapplica=ons(will
replacemod_plsql)▪ OracleApplica=onExpress(APEX)▪ RESTfulWebservices
WhatisORDS?
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 13
![Page 14: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/14.jpg)
WhatisORDS?TheHistory
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 14
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 15: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/15.jpg)
ORDSiscurrentlytransi2oningawayfromthedependencyonAPEX
► ORDSrequiresarepositorytostorethewebservicedefini=ons
WhatisORDS?APEXRESTvs.ORDS_METADATARESTSupport
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 15
► ORDS2.0
► Schemas▪ APEX_040200/APEX_050000▪ APEX_LISTENER▪ APEX_REST_PUBLIC_USER
► Configurationusing▪ APEXSQLWorkshop
► ORDS3.0
► Schemas▪ ORDS_METADATA▪ ORDS_PUBLIC_USER
► Configurationusing▪ SQLDeveloper▪ PL/SQLAPI
![Page 16: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/16.jpg)
► APEXRESTsupportintheAPEXSQLWorkshop
WhatisORDS?APEXRESTvs.ORDS_METADATARESTSupport
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 16
![Page 17: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/17.jpg)
► Twodifferentrepositories:APEXRESTandORDS_METADATAREST▪ TypicallybothareinstalledwhenusingAPEX5▪ APEX5requiresthatyourunapex_rest_config.sqlwhichcreatesAPEX_LISTENER
andAPEX_REST_PUBLIC_USER
► TheFuture?▪ NewfeatureswillonlybeaddedtoORDS_METADATAREST
► InwhichrepositorydoIcreatethewebservice?
► APEXREST▪ Integra=onwithAPEXSession
► ORDS_METADATAREST▪ ThenewRESTfunc=onalitybasedonthenewmetadatarepository▪ PL/SQLAPIs(defineandoauth)
WhatisORDS?APEXRESTvs.ORDS_METADATARESTSupport
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 17
![Page 18: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/18.jpg)
► HowisaRESTwebservicecallactuallyprocessed?
WhatisORDS?Architecture
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 18
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 19: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/19.jpg)
► MapandBind:▪ ImplicitlyaccessallURIparametersintheURLorinthebody(e.g.POSTrequest)
− Happensautoma=cally,evenJSONParameters(usingContent-Type:applica=on/json)
− AllparametersareSTRINGs
▪ Explicitparameterspossible− Properdatatypes
− Accessheadervariables
WhatisORDS?Architecture
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 19
![Page 20: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/20.jpg)
► TransformtoJSON▪ ReturnJSONbyusingbindvariables(declara=vely)orcreatetheJSONmanually
yourself▪ Declara=veFormats:JSONorCSV,manuallyyoucancreateanything▪ Canchangetheh\preturncodeorseth\pheadervariables
WhatisORDS?Architecture
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 20
![Page 21: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/21.jpg)
► Connec=onPooling▪ ThetargetOracleuser(schema)isac=vatedusingaProxyConnect▪ TheuserORDS_PUBLIC_USERconnecttothedatabaseandthenswitchesitsiden=tyto
thetargetOracleuser▪ Thusweneedfewerconnec=onpoolsandeachconnec=onpoolbecomessmallersince
mul=pleOracleuserscanbeservedwiththesameconnec=onpool▪ EachSQLandPL/SQLstatementisexecutedusingthetheoriginalusersession
WhatisORDS?Architecture
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 21
![Page 22: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/22.jpg)
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 22
ManagementoftheRESTdefini=onswithSQLDeveloperandtheAPI
![Page 23: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/23.jpg)
► ManagementoftheRESTdefini=onswithSQLDeveloper
RESTDefini=onsManagementwithSQLDeveloper
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 23
![Page 24: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/24.jpg)
► ManagementoftheRESTdefini=onswithSQLDeveloper=>connecttoORDSrepositorythroughJ2EEapp
RESTDefini=onsManagementwithSQLDeveloper
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 24
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 25: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/25.jpg)
► ManagementoftheRESTdefini=onswithSQLDeveloper
► Createuseroncommandline
RESTDefini=onsManagementwithSQLDeveloper
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 25
Schema/Workspace will decide between APEX REST and ORDS REST
##UsertomanageRESTdefinitionsinSQLDeveloperjava-jarords.waruserdietmar.aust"SQLDeveloper”
![Page 26: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/26.jpg)
► 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
RESTDefini=onsManagementthroughtheAPI
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 26
![Page 27: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/27.jpg)
► Handler–types▪ SQLQuery(legacy)(source_type_query)▪ SQLQuery(eineZeile)(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=onsHandler-Types
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 27
![Page 28: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/28.jpg)
► Handler–Typ:SQLQuery(legacy)(source_type_query)▪ Containsalinktoitself
RESTDefini=onsHandler-Typen
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 28
selectemp.*fromemp
![Page 29: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/29.jpg)
► Handler–TypSQL:SQLQuery(onerow)(legacy)(source_type_query_one_row)
RESTDefini=onsHandler-Typen
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 29
selectemp.*fromempwhereempno=:empno
![Page 30: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/30.jpg)
► Handler–TypSQL:Feed(source_type_feed)
RESTDefini=onsHandler-Typen
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 30
selectemp.*fromemp
![Page 31: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/31.jpg)
► Handler–TypSQL:Collec=on(source_type_collec=on_feed)
► Completeincl.naviga=onlinks:▪ Self▪ Describedby▪ First(onlybypagina=onorlimit)▪ Next(onlybypagina=onorlimit)▪ Previous(onlybypagina=onorlimit)
RESTDefini=onsHandler-Typen
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 31
selectemp.*fromemp
![Page 32: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/32.jpg)
► Handler–TypSQL:Collec=onItem(source_type_collec=on_item)▪ Containsalinktothecollec=onitself
RESTDefini=onsHandler-Typen
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 32
selectemp.*fromempwhereempno=:empno
![Page 33: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/33.jpg)
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 33
UseCases
![Page 34: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/34.jpg)
Firststep:EnableRESTcapabili=esforaschemainthedatabase
► UsingtheGUI(right-clickontheconnec=on)
► Usingthecommandline/API
UseCasesEnableRESTinSchema
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 34
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 35: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/35.jpg)
Implementnaviga=onlinkstonavigatebetweenthedifferentressources
► Linksusedfor:▪ Linktothecurrentrow▪ Linktoanimageoranembeddedlist(ressourceorderscancontainalisttothe
relatedorderitems)▪ Linktotheparent▪ Linktoother“siblings”usingrela=vepaths,e.g.../..
UseCasesNaviga=onandLinks
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 35
![Page 36: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/36.jpg)
ModifyressourcesusingPOST,PUTandDELETE
► Createanewressource(POST)
► Updatearessource(PUT)
► Deletearessource(DELETE)
UseCasesModifyressourcesusingPOST,PUTandDELETE
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 36
Demo
![Page 37: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/37.jpg)
► RendereverythingmanuallywithPL/SQLyourself▪ GETwithTypPL/SQL▪ UseOWAToolkittowriteitout
− APEX_JSON,PL/JSON
− 12cJSONFunk=onen
UseCasesPL/SQLHandler–implementeverythingyourself
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 37
![Page 38: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/38.jpg)
► Displayanimage▪ GEThandler(typeMediaressource)
UseCasesMedia-Ressourcen
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 38
selectmimetype,product_imagefromdemo_product_infowhereproduct_id=to_number(:product_id)
![Page 39: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/39.jpg)
► 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
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 39
![Page 40: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/40.jpg)
► 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
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 40
![Page 41: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/41.jpg)
► Inputparameters▪ Implicit
− AllvariablesthatarepassedintheURLorinthecontentbody
− :content_type(varchar2,z.B.applica=on/json)
− :body(alsBLOB)
▪ Explicit(usingdeclara=veparameters)− Allregularh\pheadervariables
− AllvariablesthatarepassedintheURLorinthecontentbody
UseCasesParameter
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 41
![Page 42: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/42.jpg)
► Outputparameters▪ ONLYExplicit(usingdeclara=veparameters)
− Returnaresponsebysezngasimplebindvariablewhichisthenconvertedautoma=callytoJSONbyORDS(:empno:=99)
− Setanh\pResponseCode(Pseudo-Header:X-APEX-STATUS-CODE),e.g.:status:=201,403
− RedirecttoadifferentURL(Pseudo-Header:X-APEX-FORWARD)
− Setah\pheadervariable
UseCasesParameter
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 42
![Page 43: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/43.jpg)
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 43
Demo
![Page 44: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/44.jpg)
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 44
Security
![Page 45: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/45.jpg)
► 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
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 45
![Page 46: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/46.jpg)
► Authoriza=on:=Protectaccesstoressourcesforcertainuserroles
► CreateaROLEfirst(onlypossiblethroughtheAPI)
► CreateaprivilegetoprotectafullmoduleorjustaURIpa\ern
► Cannotrequireprotec=onjustforaspecificmethod,e.g.limitaccesstoPUT,POST,DELETEandallowGETforeverybody.▪ Perhapsusingtwomodules:
− /public/departments/(implementGEThandler)
− /protected/departments/(implementGET,POST,PUT,DELETEhandler)
Security
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 46
![Page 47: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/47.jpg)
Security
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 47
![Page 48: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/48.jpg)
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 48
Demo
![Page 49: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/49.jpg)
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 49
Debugging/Troubleshoo=ng
![Page 50: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/50.jpg)
► 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
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 50
<entrykey="debug.debugger">true</entry><entrykey="debug.printDebugToScreen">true</entry>
![Page 51: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/51.jpg)
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 51
Tools
![Page 52: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/52.jpg)
► Commandlinetool:curl-h\ps://curl.haxx.se/
► AdvancedRESTClient(forGoogleChrome)▪ h\ps://chrome.google.com/webstore/detail/advanced-rest-client/
hgmloofddffdnphfgcellkd{{jeloo
► PLSQLlogger▪ h\ps://github.com/OraOpenSource/Logger
Tools
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 52
![Page 53: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/53.jpg)
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 53
FurtherReading
![Page 54: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/54.jpg)
► 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-res|ul-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://res|ul-api-design.readthedocs.org/en/latest/intro.html▪ h\p://blog.mwaysolu=ons.com/2014/06/05/10-best-prac=ces-for-be\er-res|ul-
api/
► CarstenCzarskiBlogaboutREST:h\p://json-rest-oracledb.blogspot.de/(canbetranslatedusinggoogletranslator)
FurtherReading
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 54
![Page 55: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/55.jpg)
► 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.ie|.org/html/rfc2616
► URIspec:h\p://tools.ie|.org/html/rfc3986
► JSONformat:h\p://json.org/
WeitereInforma=onsquellen
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 55
![Page 56: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/56.jpg)
1TagesEntwicklerWorkshopORDS► InKölnam11.Juli
► Themen▪ Installa=on/Konfigura=onfürAPEX/mod_plsqlundREST▪ „RealWorld“Projekt(kompliziertesBeispiel)▪ VerschiedeneUseCasesmitvielenHands-Ons▪ Authen=fizierungmitWLS,GlassfishundTomcat▪ OAUTH2Implemen=erung
1-DayDeveloperWorkshop
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 56
![Page 57: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/57.jpg)
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 57
![Page 58: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/58.jpg)
Contact
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 58
DietmarAustOpal-Consul=ng,Kölnwww.opal-consul=ng.dedaust.blogspot.comdietmar.aust@opal-consul=ng.de
![Page 59: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/59.jpg)
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 59
Auto-REST
![Page 60: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/60.jpg)
QuicklyAuto-RESTenableadatabasetableorview
► Pros:▪ Fastandeasy▪ CandosomecleverthingsusingINSTEAD_OFtriggersontheview
► Cons:▪ Can’tusetheauthen=cated:current_uservariabletofigureouttheuseriden=ty
whichisrequiredforloggingpurposes▪ Currentlyafeatureisunderdiscussiontomake:current_useravailablethrough
sys_contextsimilartoapex.
Auto-REST
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 60
![Page 61: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/61.jpg)
EnableRESTcapabili=esforatableorview
► UsingtheGUI(right-clickonthetable/view)▪ „EnableRESTService“
► Usingthecommandline/API
UseCasesEnableRESTinSchema
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 61
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 62: Oracle ORDS – Quickstart für Entwickler · Oracle ORDS – Quickstart für Entwickler 26.04.2016 Page 14 Version Date Description 1.0 2010 First release as Oracle APEX Listener](https://reader030.vdocuments.site/reader030/viewer/2022040522/5e7e2de41e2f3928572bc0e1/html5/thumbnails/62.jpg)
26.04.2016 Oracle ORDS – Quickstart für Entwickler Page 62
Demo