Difference between revisions of "SStorageRest"
(→Access Mode) |
(→Access Mode) |
||
Line 37: | Line 37: | ||
<source lang="java"> | <source lang="java"> | ||
− | resource.profile().accessPoints().get(0).address(); | + | String server addresses=resource.profile().accessPoints().get(0).address(); |
</source> | </source> | ||
− | where "resource" is the object returned by the query. | + | where "resource" is the object returned by the query. the field address can contains one or more server separated by comma. |
= Supported Operations = | = Supported Operations = |
Revision as of 17:10, 21 December 2017
Contents
Overview
A RESTful service providing functions for create, update, read a json object on MongoDB
Key features
The core of the service is java based. It offers a interface for performing CRUD operation through a remote backend over JSON object:
- Create
- Read
- Update
- Delete
Design and Architecture
The architecture implements a multiton pattern. The records are collected in two separated collection: the first one is a collection dedicated to a single SmartApps, the second One is a collection that collects all the records of all the smartApplications.
Access Mode
The endppoint of the service could be discovered by IS-Collector service. Now it is deployed under SmartArea VO. For accessing to the service it's needed to use the ic-client library in the following way:
SimpleQuery query = queryFor(ServiceEndpoint.class); query.addCondition("$resource/Profile/Category/text() eq '"+sc+"' and $resource/Profile/Name eq '"+sn+"' "); DiscoveryClient<ServiceEndpoint> client = clientFor(ServiceEndpoint.class); List<ServiceEndpoint> resources = client.submit(query);
where "sc" and "sn" are respectively the "ServiceClass" and the "ServiceName" of the resource. In this case the "ServiceClass" is: DataStorage, the "ServiceName" is "SmartStorageREST".
The method client.submit(query) return a List of resources (tipically with only one resource) that match the query parameters.
For retrieving the hostname of the Query server, it's needed to scroll the resource found in the follwing way:
String server addresses=resource.profile().accessPoints().get(0).address();
where "resource" is the object returned by the query. the field address can contains one or more server separated by comma.
Supported Operations
- create: implemented by http POST method;
- read : implemented by http GET method;
- update: implemented by http PUT method;
- delete: implemented by http DELETE method.
Getting-Started
Maven artifacts
it is downloadable by the following nexus server: http://maven.research-infrastructures.eu/nexus
<groupId>org.gcube.contentmanagement</groupId> <artifactId>storage-service-rest</artifactId>
Usage examples
To insert (create) a new record in the system, we might use:
- POST n039.smart-applications.area.pi.cnr.it:8080/storage/rest/resources?gcube-token=xxxxxxxx
To read a object with ID# 33245:
- GET http://n039.smart-applications.area.pi.cnr.it:8080/storage/rest/resources/33245?gcube-token=xxxxxxxx The same URI would be used for PUT and DELETE, to update and delete, respectively.
Here are proposed URIs for products:
- POST http://n039.smart-applications.area.pi.cnr.it:8080/storage/rest/resources?gcube-token=xxxxxxxx for creating a new object.
- GET|PUT|DELETE http://n039.smart-applications.area.pi.cnr.it:8080/storage/rest/resources/33245?gcube-token=xxxxxxxx
for reading, updating, deleting object with id 66432, respectively.
For deleting all the objects in the collection: