The new REST features (to create REST resources) are implemented on top of Application Module (WebServices > REST). Here you can choose a Root View Instance, assign it to a release version and further configure the defined REST resource in a new Overview Editor.
Following summarizes some of the new REST features in ADF:
Resource Versioning
Versioning is the first thing need to be configured before you can start creating REST resources. It is supported at the level of the adf-config.xml file. Here you can define different versions. Each version can be configured as active, deprecated or desupported. To keep things simple I recommend to use same name for internal and release name.Versions marked as desupported will reply with HTTP 500 and corresponding message. They will not serve any REST Data.
Versions marked as deprecated will work. If you invoke the URL for v2 metadata you will get information that there is a successor-version:
It implements the HATEOAS principle and therefore is very developer friendly.
Read, Create, Update, Delete Out-of-the-box
By default all REST HTTP Methods are exposed on a resource. GET for read, POST for Create, DELETE for Delete. To partially update a resource (only some attributes e.g.) the PATCH method is exposed. For PUT you need to provide all attributes (It will do kind of a replace).
Important: When working with the REST API it is important to set the Content-Type to application/vnd.oracle.adf.description+json otherwise there will be the following exception:
oracle.adf.internal.model.rest.core.exception.CannotParseContentException: The PayloadParser could not be found in the ResourceProcessingContext.
See the following Postman PATCH sample:
Important: When working with the REST API it is important to set the Content-Type to application/vnd.oracle.adf.description+json otherwise there will be the following exception:
oracle.adf.internal.model.rest.core.exception.CannotParseContentException: The PayloadParser could not be found in the ResourceProcessingContext.
See the following Postman PATCH sample:
Pagination for collections by default
Having a REST collection ADF automatically exposes parameters for pagination. Just append limit und offset as URL parameters and your good to go. see next pic to get a feeling how the parameters affect the response:
Children and LOVs as sub-resource
This is also a pretty great feature.
Configured LOVs on specific attributes will by default be exposed as sub-resources too. See example in postman:
Attribute Shaping
By default all attributes of a View Object will be exposed in the REST resource. If you want to expose only a subset of the attributes you can define "Service Shapes" on the View Objectand use those to customize the REST resource (Tab: Attributes)
Security
Securing ADF REST Resources is quite powerful. It works just like with Pages / Taskflow Permission. You just need to run the ADF Security Wizard on the RESTWebService project.
More features
Canonical Link
The canonical link is used to link to a resource that represents the full representation (of REST resource). This can be an "internal" defined View Object or an external (by pointing to the corresponding) ADF Connection.
See details in the Dev Guide: How to expose canonical Resources
See details in the Dev Guide: How to expose canonical Resources
RowFinder Key
With RowFinder configuration it is possible to change the URL of a resource from e.g. /employees/100 to /employees/SKING
Expose Custom Methods in the ADF REST Resource
To be evaluated ;) The ADF Documentation is not very clear about that topic.
--
Sample Code: https://github.com/enpit/enpit.sample.adf1221.restsandboxFurther information
- Great test tool for REST APIs: Postman ( https://www.getpostman.com/ )
- ADF 12.2.1 DevGuide: 16 Creating RESTful Web Services with Application Module
- ADF 12.2.1 DevGuide: 22 Consuming RESTful Web Services Using the ADF REST Framework
Hi,
ReplyDeleteCan you tell me how to expose custom methods?...