OracleORDS101-JumpstartyourDevelopment
DietmarAustOpal-Consul;ng,Kölnwww.opal-consul;ng.de
► 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
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 2
DietmarAust
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 3
► 2015DatabaseDeveloperoftheyearintheORDScategory▪ PrimarilyformyknowledgeregardingORDSasthepla_ormtechnologyforAPEX▪ RESTfulServiceswithORDSares;llrela;velynew–buttheyhavegreatpoten;al
andwillgaininimportance
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 4
Agenda
► WhatisREST?
► WhatisORDS?▪ ComponentsandArchitecture
► ManagementoftheRESTdefini;onswithSQLDeveloperandtheAPI
► UseCases▪ Naviga;on/Links/Filter/Sor;ng/Parameter(Input/Output)
► Security▪ Authen;ca;onandAuthoriza;on
► Addi;onalReading
► TheslidesandthedemoscriptwillbeavailablefromOGh.nlwebsiteandalsoonmyblog:h\p://daust.blogspot.de
Agenda
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 5
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 6
WhatisREST?
► 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
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 7
► 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
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 8
► Methodsimplementaspecificopera;on▪ Uniformopera;onsforallressources▪ GET,POST,PUT,DELETE,OPTIONS,HEAD
► Weuseveryfewverbstooperateonmanydifferentnouns.
WhatisREST?Methods
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 9
► Communica;onofsuccessanderrormessagesthroughstandardHTTPResponsecodes1xx,2xx,3xx,4xx,5xx▪ h\p://www.restapitutorial.com/
h\pstatuscodes.html#
WhatisREST?Methods
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 10
► 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
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 11
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 12
WhatisORDS?
► OracleRestDataServices(ORDS)▪ MiddlewareJ2EEcomponentinthe
applica;onserver(WLS,Glassfish,Tomcat)▪ TranslatesURLsintoacallinthedatabase
(eitherselectorstoredprocedurecall)
► Threemajorusecases▪ SupportforOWAtoolkitapplica;ons(will
replacemod_plsql)▪ OracleApplica;onExpress(APEX)▪ RESTfulWebservices
WhatisORDS?
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 13
WhatisORDS?TheHistory
02.02.2016 Oracle ORDS 101 - Jumpstart your Development 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,…
ORDSiscurrentlytransi2oningawayfromthedependencyonAPEX
► ORDSrequiresarepositorytostorethewebservicedefini;ons
WhatisORDS?APEXRESTvs.ORDS_METADATARESTSupport
02.02.2016 Oracle ORDS 101 - Jumpstart your Development 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
► APEXRESTsupportintheAPEXSQLWorkshop
WhatisORDS?APEXRESTvs.ORDS_METADATARESTSupport
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 16
► Twodifferentrepositories:APEXRESTandORDS_METADATAREST▪ TypicallybothareinstalledwhenusingAPEX5▪ APEX5requiresthatyourunapex_rest_config.sqlwhichcreatesAPEX_LISTENER
andAPEX_REST_PUBLIC_USER
► InwhichrepositorydoIcreatethewebservice?
► APEXREST▪ Integra;onwithAPEXSession
► ORDS_METADATAREST▪ ThenewRESTfunc;onalitybasedonthenewmetadatarepository▪ PL/SQLAPIs(defineandoauth)
► TheFuture?▪ NewfeatureswillonlybeaddedtoORDS_METADATAREST
WhatisORDS?APEXRESTvs.ORDS_METADATARESTSupport
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 17
► Currentlythedocumenta;ondoesn’talwaysclearlydis;nguishbetweenAPEXRESTandORDS_METADATAREST.
► Thusthesamplesinthedocumenta;onandontheinternetaremixed….buttherearesmallfunc;onaldifferences!
► Inthispresenta;onwewillfocusonthefeaturesavailableinORDS_METADATARESTSupportwithORDS3.0
WhatisORDS?APEXRESTvs.ORDS_METADATARESTSupport
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 18
► HowisaRESTwebservicecallactuallyprocessed?
WhatisORDS?Architecture
02.02.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
► MapandBind:
▪ ImplicitlyaccessallURIparametersintheURLorinthebody(e.g.POSTrequest)− Happensautoma;cally,evenJSONParameters(usingContent-Type:
applica;on/json)
▪ Explicitparameterspossible▪ Accessheadervariables
WhatisORDS?Architecture
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 20
► TransformtoJSON
▪ ReturnJSONbyusingbindvariables(declara;vely)orcreatetheJSONmanuallyyourself
▪ Declara;veFormats:JSONorCSV,manuallyyoucancreateanything▪ Canchangetheh\preturncodeorseth\pheadervariables
WhatisORDS?Architecture
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 21
► Connec;onPooling▪ ThetargetOracleuser(schema)isac;vatedusingaProxyConnect▪ TheuserORDS_PUBLIC_USERconnecttothedatabaseandthenswitchesitsiden;tyto
thetargetOracleuser▪ Thusweneedfewerconnec;onpoolsandeachconnec;onpoolbecomessmallersince
mul;pleOracleuserscanbeservedwiththesameconnec;onpool▪ EachSQLandPL/SQLstatementisexecutedusingthetheoriginalusersession
WhatisORDS?Architecture
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 22
► Connec;onPooling▪ EasiertodealwiththanwithAPEX,sincewithAPEXthesessionuserwillbe
APEX_PUBLIC_USER,NOTtheparsingschema
WhatisORDS?Architecture
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 23
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 24
ManagementoftheRESTdefini;onswithSQLDeveloperandtheAPI
► ManagementoftheRESTdefini;onswithSQLDeveloper
RESTDefini;onsManagementwithSQLDeveloper
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 25
► ManagementoftheRESTdefini;onswithSQLDeveloper
► Createuseroncommandline
RESTDefini;onsManagementwithSQLDeveloper
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 26
Schema/Workspace will decide between APEX REST and ORDS REST
##UsertomanageRESTdefinitionsinSQLDeveloperjava-jarords.waruserdietmar.aust"SQLDeveloper”
► ManagementoftheRESTdefini;onswithSQLDeveloper
RESTDefini;onsManagementwithSQLDeveloper
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 27
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“
► RESTcomponents▪ Modules
− ResourceTemplates
− Methods/Handlers(GET,PUT,POST,DELETE)
RESTDefini;onsModules,RessourceTemplatesandHandlers
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 28
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 29
Demo
► 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
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 30
► Handler–types▪ SQLQuery(legacy)(source_type_query)▪ SQLQuery(eineZeile)(legacy)(source_type_query_one_row)▪ Collec;on(source_type_collec;on_feed)▪ Collec;onItem(source_type_collec;on_item)▪ Feed(source_type_feed)▪ PL/SQL(source_type_plsql)
− Generateeverythingmanuallymyself
▪ Media(source_type_media)− Binaryrepresenta;ons
RESTDefini;onsHandler-Types
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 31
► Handler–Typ:SQLQuery(legacy)(source_type_query)▪ Containsalinktoitself
RESTDefini;onsHandler-Typen
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 32
selectemp.*fromemp
► Handler–TypSQL:SQLQuery(onerow)(legacy)(source_type_query_one_row)
RESTDefini;onsHandler-Typen
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 33
selectemp.*fromempwhereempno=:empno
► 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
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 34
selectemp.*fromemp
► Handler–TypSQL:Collec;onItem(source_type_collec;on_item)▪ Containsalinktothecollec;onitself
RESTDefini;onsHandler-Typen
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 35
selectemp.*fromempwhereempno=:empno
► Handler–TypSQL:Feed(source_type_feed)
RESTDefini;onsHandler-Typen
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 36
selectemp.*fromemp
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 37
UseCases
Firststep:EnableRESTcapabili;esforaschemainthedatabase
► UsingtheGUI(right-clickontheconnec;on)
► Usingthecommandline/API
UseCasesEnableRESTinSchema
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 38
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;
Implementnaviga;onlinkstonavigatebetweenthedifferentressources
► Linksusedfor:▪ Linktothecurrentrow▪ Linktoanimageoranembeddedlist(ressourceorderscancontainalisttothe
relatedorderitems)▪ Linktotheparent▪ Linktoother“siblings”usingrela;vepaths,e.g.../..
UseCasesNaviga;onandLinks
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 39
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 40
Demo
ModifyressourcesusingPOST,PUTandDELETE
► Createanewressource(POST)
► Updatearessource(PUT)
► Deletearessource(DELETE)
UseCasesModifyressourcesusingPOST,PUTandDELETE
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 41
Demo
► RendereverythingmanuallywithPL/SQLyourself▪ GETwithTypPL/SQL▪ UseOWAToolkittowriteitout
− APEX_JSON,PL/JSON
− 12cJSONFunk;onen
UseCasesPL/SQLHandler–implementeverythingyourself
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 42
► Displayanimage▪ GEThandler(typeMediaressource)
UseCasesMedia-Ressourcen
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 43
selectmimetype,product_imagefromdemo_product_infowhereproduct_id=to_number(:product_id)
► 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
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 44
► 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
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 45
► Inputparameters▪ Implicit
− AllvariablesthatarepassedintheURLorinthecontentbody
− :content_type(varchar2,z.B.applica;on/json)
− :body(alsBLOB)
▪ Explicit(usingdeclatra;veparameters)− Allregularh\pheadervariables
− AllvariablesthatarepassedintheURLorinthecontentbody
UseCasesParameter
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 46
► Outputparameters▪ Explicit(usingdeclatra;veparameters)
− Returnaresponsebyseyngasimplebindvariablewhichisthenconvertedautoma;callytoJSONbyORDS
− Setanh\pResponseCode(Pseudo-Header:X-APEX-STATUS-CODE),e.g.201,403
− RedirecttoadifferentURL(Pseudo-Header:X-APEX-FORWARD)
− Setah\pheadervariable
UseCasesParameter
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 47
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 48
Demo
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 49
Security
► 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
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 50
► Authoriza;on:=Protectaccesstoressourcesforcertainuserroles
► CreateaROLEfirst(onlypossiblethroughtheAPI)
► CreateaprivilegetoprotectafullmoduleorjustaURIpa\ern
► Cannotrequireprotec;onjustforaspecificmethod,e.g.limitaccesstoPUT,POST,DELETEandallowGETforeverybody.▪ Perhapsusingtwomodules:
− /public/departments/(implementGEThandler)
− /protected/departments/(implementPOST,PUT,DELETEhandler)
Security
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 51
Security
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 52
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 53
Demo
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 54
Auto-REST
QuicklyAuto-RESTenableadatabasetableorview
► Pros:▪ Fastandeasy▪ CandosomecleverthingsusingINSTEAD_OFtriggersontheview
► Cons:▪ Can’tusetheauthen;cated:current_uservariabletofigureouttheuseriden;ty
whichisrequiredforloggingpurposes
Auto-REST
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 55
EnableRESTcapabili;esforatableorview
► UsingtheGUI(right-clickonthetable/view)▪ „EnableRESTService“
► Usingthecommandline/API
UseCasesEnableRESTinSchema
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 56
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;
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 57
Demo
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 58
Debugging/Troubleshoo;ng
► 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
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 59
<entrykey="debug.debugger">true</entry><entrykey="debug.printDebugToScreen">true</entry>
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 60
Tools
► Commandlinetool:curl-h\ps://curl.haxx.se/
► AdvancedRESTClient(forGoogleChrome)▪ h\ps://chrome.google.com/webstore/detail/advanced-rest-client/
hgmloofddffdnphfgcellkdzzjeloo
► PLSQLlogger▪ h\ps://github.com/OraOpenSource/Logger
Tools
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 61
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 62
FurtherReading
► 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
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 63
► 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
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 64
1-DayDeveloperWorkshopORDS► InCologneinJune(inGerman)
► OnlineasafulldaywebinarinJuly(inEnglish)
► Topics▪ Setup/configura;onforAPEX/mod_plsqlandREST▪ RealWorldproject(morecomplexexamples)▪ Differentusecaseswithlotsofhands-ons▪ Authen;ca;onusingWLS,GlassfishandTomcat▪ OAUTH2flowimplementa;on
1-DayDeveloperWorkshop
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 65
Contact
02.02.2016 Oracle ORDS 101 - Jumpstart your Development Page 66
DietmarAustOpal-Consul;ng,Kölnwww.opal-consul;ng.dedaust.blogspot.comdietmar.aust@opal-consul;ng.de