SlideShare a Scribd company logo
WHITE PAPER




Simplifying RESTful Search




Abstract
  This white paper talks about how search over REST can
  be simplified. We are not aiming at developing
  standards for RESTful search, but will be discussing
  how this problem can be approached.




 Impetus Technologies Inc.
 www.impetus.com
 January 2012
Simplifying RESTful Search



                                                                             Table of Contents
Introduction ........................................................................................................... 2
Search Requirements ............................................................................................. 3
HTTP Method Selection ......................................................................................... 4
URL Representation ............................................................................................... 4
   Query Criteria vs. Embedded Criteria ................................................................ 4
   Modeling Filter Criteria ...................................................................................... 5
   Feed Item Query Language (FIQL) ..................................................................... 5
   Resource Query Language (RQL) ....................................................................... 5
Case study: Apache CXF advance search features ................................................. 6
Summary ................................................................................................................ 7




                                                                                          Introduction
The REST architectural pattern is based around two basic principles:
      1. Resources as URLs: A resource is something like an entity or a noun in
         modeling language. Anything on the web is identified as a resource and
         each unique resource is identified by a unique URL.
      2. Operations as HTTP methods: REST leverages existing HTTP methods,
         particularly GET, PUT, POST, and DELETE which map to a resource’s
         read, create, modify and removal operations, respectively.
Any action performed by a client over HTTP, contains a URL and an HTTP
method. The URL represents the resource and the HTTP method represents the
action which needs to be performed over the resource.

Being a broad architectural style, REST always has different interpretations. The
ambiguity is exacerbated by the fact that there are not nearly enough HTTP
methods to support common operations. One of the most common examples is
the lack of a ‘search’ method. While search is one of the most extensively used
features across different applications, there have been no standards for
implementing this feature. Due to this, people tend to design search in different
ways. Given that REST aims to unify service architecture, any ambiguity must be
seen as weakening the argument for REST.




                                                                                                                             2
Simplifying RESTful Search



                                               Search Requirements
Search is the most used feature across different web applications, and supports
almost similar features around different applications. Listed below are some of
the common constituents of search features:


•   Search based on one or more criteria at a time
        -   Search red colored cars of type hatchback
                     color=red && type=hatchback
•   Relational and conditional operator support
        -   Search red or black car with mileage greater than 10
                     Colour=red|black&& mileage > 10
•   Wild card search
        -   Search car manufactured from company name starting with M
                     company=M*
•   Pagination
        -   List all cars but fetch 100 results at a time
                     upperLimit=200 &&lowerLimit=101
•   Range searches
        -   Get me all the cars launched between 2000 and 2010
                     launch year between (2000, 2010)


When we support search with such features, the search interface design itself
becomes complex. And when implemented in a REST framework, meeting all
these requirements (whilestill conforming to REST!) is challenging.
Coming back to the basic REST principles, there are two questions that need to
be answered:


1. Which HTTP method should be used for ‘search’?
2. How can an effective resource URL be created for search?
    a. Query parameters versus Embedded URLs
    b. Modeling filter criteria




                                                                                         3
Simplifying RESTful Search



                                           HTTP Method Selection
Effectively, REST categorizes operations by their nature and associates well-
defined semantics with these categories. The idempotent operations are GET,
PUT, and DELETE (GET for read-only, PUT for update, DELETE for remove),
while the POST method is used for non-idempotent procedures like create.
By definition itself, search is a read only operation, which is used to request for
a collection of resources, filtered and based on some criteria. Therefore, the
GET HTTP method for the search feature is an obvious choice. However, with
GET, there is a constraint with respect to URL size if complex criteria are added
in the URL.




                                                 URL Representation
Query Criteria vs. Embedded Criteria
It is important to discuss this using an example. Say a user wishes to search for
four-doored sedan cars of blue color? What will the resource URL for this
request look like? Indicated below are two URLs that are syntactically different
but semantically the same:

    •   /cars/?color=blue&type=sedan&doors=4
    •   /cars/color:blue/type:sedan/doors:4

Both of the above URLs conform to the RESTful way of representing a resource
query, but are represented differently. While the first one uses the URL query
criteria to add filtering details, the latter follows an embedded URL approach.
The embedded URL approach is more readable and can take advantage of the
native caching mechanisms that exist on the web server for HTTP traffic.
However, this approach limits the user to provide parameters in a specific order.
Wrong parameter positions will cause an error or unwanted behavior. The two
instructions stated below look the same, but may not give the correct results

    •   /cars/color:red/type:sedan
    •   /cars/type:sedan/color:red

Also, since there is no standardization for embedding criteria, people can device
their own ways of representation.

It is imperative therefore, to consider the query criteria approach over the
embedded URL approach, though the representation is a bit complex and lacks
readability.



                                                                                          4
Simplifying RESTful Search


                 Modeling Filter Criteria
                 A search-results page is fundamentally RESTful even though its URL identifies a
                 query. The URL can incorporate SQL-like elements. While SQL is meant to filter
                 data fetched from the relational data, the new modeling language can filter data
                 from the hierarchical set of resources. This language can help in devising a
                 mechanism to communicate complex search requirements over URLs. In this
                 section, two such styles are discussed in detail.


                 Feed Item Query Language (FIQL)
                 The Feed Item Query Language (FIQL, pronounced ‘fickle’) is a simple but
                 flexible, URI-friendly syntax for expressing filters across the entries in a
                 syndicated feed. These filter expressions can be mapped at any RESTful service
                 and help in modeling complex filters. Provided below are some samples of such
                 web URLs against their respective SQLs.

                SQL                                          REST Search URLs

select * from actors where                  /actors?_s=firstname==PENELOPE;lastname
firstname=’PENELOPE’ and                    ==GUINESS
lastname=’GUINESS’

select * from actors where lastname         /actors?_s=lastname==PEN*
like ‘PEN%’

select * from films where filmid=1          /films?_s=filmid==1;rentalduration!=0
and rentalduration<> 0

select * from films where filmid>=          /films?_s=filmid=ge=995
995

select * from films where release           /film?_s=releasedate=le=2005-05-
date < ‘27/05/2005’                         27T00:00:00.000%2B00:00



                 Resource Query Language (RQL)
                 Resource Query Language (RQL) defines a syntactically simple query language
                 for querying and retrieving resources. RQL is designed to be URI-friendly,
                 particularly as a query component of a URI, and highly extensible. RQL is a
                 superset of HTML’s URL encoding of form values, and a superset of Feed Item
                 Query Language (FIQL). RQL basically consists of a set of nestable named
                 operators which each have a set of arguments and operate on a collection of
                 resources.




                                                                                                        5
Simplifying RESTful Search



                Case study: Apache CXF advance search features
                To support advance search capabilities, Apache CXF introduced FIQL support
                with its JAX-RS implementation since the 2.3.0 release. With this feature, users
                can now express complex search expressions using URI. Provided below is a
                detailed note on how this feature can be used.

                To work with FIQL queries, a SearchContext needs be injected into an
                application code and used to retrieve a SearchCondition representing the
                current FIQL query. This SearchCondition can be used in a number of ways
                for finding the matching data.

@Path("books")
public class Books {
private Map<Long, Book> books;
@Context
private SearchContext context;

@GET
public List<Book>getBook() {

   SearchCondition<Book>sc = searchContext.getCondition(Book.class);
   //SearchConditionismet method can also be used to build a list of
matching beans
   // iterate over all the values in the books map and return a collection
of          matching beans
   List<Book> found = sc.findAll(books.values());
   return found;
}
}


                The SearchCondition can also be used to get to all the search
                requirements (originally expressed in FIQL) and do some manual comparisons
                against the local data. SearchCondition for instance, provides a utility to
                the SQL(String tableName, String... columnNames) method which internally
                introspects all the search expressions constituting a current query and converts
                them into an SQL expression:

// find all conditions with names starting from 'ami'
// and levels greater than 10 :
// ?_s="name==ami*;level=gt=10"
SearchCondition<Book>sc = searchContext.getCondition(Book.class);
assertEquals("SELECT * FROM table
             WHERE
             name LIKE 'ami%'
             AND
             level > '10'",
             sq.toSQL("table"));



                                                                                                        6
Simplifying RESTful Search



                                                                                                                               Summary
                                       Data querying is a critical component of most applications. With the advance of
                                       rich, client-driven Ajax applications and document oriented databases, new
                                       querying techniques are needed; these techniques must be simple but
                                       extensible, designed to work within URIs and query for collections of resources.
                                       The NoSQL movement is opening the way for a more modular approach to
                                       databases, and separating out modeling, validation, and querying concerns from
                                       storage concerns. What is needed however, are new querying approaches to
                                       match more modern architectural design.




   About Impetus
   Impetus Technologies offers Product Engineering and Technology R&D services for software product development.
   With ongoing investments in research and application of emerging technology areas, innovative business models, and
   an agile approach, we partner with our client base comprising large scale ISVs and technology innovators to deliver
   cutting-edge software products. Our expertise spans the domains of Big Data, SaaS, Cloud Computing, Mobility
   Solutions, Test Engineering, Performance Engineering, and Social Media among others.

   Impetus Technologies, Inc.
   5300 Stevens Creek Boulevard, Suite 450, San Jose, CA 95129, USA
   Tel: 408.252.7111 | Email: inquiry@impetus.com
   Regional Development Centers - INDIA: • New Delhi • Bangalore • Indore • Hyderabad
   To know more visit: www.impetus.com



Disclaimers
The information contained in this document is the proprietary and exclusive property of Impetus Technologies Inc. except as otherwise indicated. No part of
this document, in whole or in part, may be reproduced, stored, transmitted, or used for design purposes without the prior written permission of Impetus
Technologies Inc.
                                                                                                                                                              7

More Related Content

What's hot

REST - Representational State Transfer
REST - Representational State TransferREST - Representational State Transfer
REST - Representational State Transfer
Peter R. Egli
 
The Internet as Web Services: introduction to ReST
The Internet as Web Services: introduction to ReSTThe Internet as Web Services: introduction to ReST
The Internet as Web Services: introduction to ReST
Bruno Kessler Foundation
 
Learn REST in 18 Slides
Learn REST in 18 SlidesLearn REST in 18 Slides
Learn REST in 18 Slides
Suraj Gupta
 
Spatial approximate string search Doc
Spatial approximate string search DocSpatial approximate string search Doc
Spatial approximate string search Doc
Sudha Hari Tech Solution Pvt ltd
 
Api wiki · git hub
Api wiki · git hubApi wiki · git hub
Api wiki · git hub
Ferry Irawan
 
ReST (Representational State Transfer) Explained
ReST (Representational State Transfer) ExplainedReST (Representational State Transfer) Explained
ReST (Representational State Transfer) Explained
Dhananjay Nene
 
REST API
REST APIREST API
REST API
Tofazzal Ahmed
 
Rest presentation
Rest  presentationRest  presentation
Rest presentationsrividhyau
 
The Rest Architectural Style
The Rest Architectural StyleThe Rest Architectural Style
The Rest Architectural Style
Robert Wilson
 
A CMD Core Model for CLARIN Web Services
A CMD Core Model for CLARIN Web ServicesA CMD Core Model for CLARIN Web Services
A CMD Core Model for CLARIN Web Services
Menzo Windhouwer
 
Representational State Transfer
Representational State TransferRepresentational State Transfer
Representational State Transfer
Alexei Skachykhin
 
Best Practices in Api Design
Best Practices in Api DesignBest Practices in Api Design
Best Practices in Api Design
Muhammad Aamir ...
 
SOA and web services
SOA and web servicesSOA and web services
SOA and web services
Sreekanth Narayanan
 
SEO website audit
SEO website auditSEO website audit
SEO website audit
Eric Muhanji
 
REST API and CRUD
REST API and CRUDREST API and CRUD
REST API and CRUD
Prem Sanil
 
Rest api standards and best practices
Rest api standards and best practicesRest api standards and best practices
Rest api standards and best practices
Ankita Mahajan
 
JSON and REST
JSON and RESTJSON and REST
JSON and REST
Robert MacLean
 
Automating the Use of Web APIs through Lightweight Semantics
Automating the Use of Web APIs through Lightweight SemanticsAutomating the Use of Web APIs through Lightweight Semantics
Automating the Use of Web APIs through Lightweight Semantics
mmaleshkova
 

What's hot (20)

REST - Representational State Transfer
REST - Representational State TransferREST - Representational State Transfer
REST - Representational State Transfer
 
ReSTful API Final
ReSTful API FinalReSTful API Final
ReSTful API Final
 
The Internet as Web Services: introduction to ReST
The Internet as Web Services: introduction to ReSTThe Internet as Web Services: introduction to ReST
The Internet as Web Services: introduction to ReST
 
Learn REST in 18 Slides
Learn REST in 18 SlidesLearn REST in 18 Slides
Learn REST in 18 Slides
 
Spatial approximate string search Doc
Spatial approximate string search DocSpatial approximate string search Doc
Spatial approximate string search Doc
 
Api wiki · git hub
Api wiki · git hubApi wiki · git hub
Api wiki · git hub
 
ReST (Representational State Transfer) Explained
ReST (Representational State Transfer) ExplainedReST (Representational State Transfer) Explained
ReST (Representational State Transfer) Explained
 
REST API
REST APIREST API
REST API
 
Rest presentation
Rest  presentationRest  presentation
Rest presentation
 
The Rest Architectural Style
The Rest Architectural StyleThe Rest Architectural Style
The Rest Architectural Style
 
A CMD Core Model for CLARIN Web Services
A CMD Core Model for CLARIN Web ServicesA CMD Core Model for CLARIN Web Services
A CMD Core Model for CLARIN Web Services
 
Representational State Transfer
Representational State TransferRepresentational State Transfer
Representational State Transfer
 
Best Practices in Api Design
Best Practices in Api DesignBest Practices in Api Design
Best Practices in Api Design
 
SOA and web services
SOA and web servicesSOA and web services
SOA and web services
 
SEO website audit
SEO website auditSEO website audit
SEO website audit
 
REST API and CRUD
REST API and CRUDREST API and CRUD
REST API and CRUD
 
Rest api standards and best practices
Rest api standards and best practicesRest api standards and best practices
Rest api standards and best practices
 
JSON and REST
JSON and RESTJSON and REST
JSON and REST
 
RESTEasy
RESTEasyRESTEasy
RESTEasy
 
Automating the Use of Web APIs through Lightweight Semantics
Automating the Use of Web APIs through Lightweight SemanticsAutomating the Use of Web APIs through Lightweight Semantics
Automating the Use of Web APIs through Lightweight Semantics
 

Viewers also liked

2011 November Symantec Intelligence Report
2011 November Symantec Intelligence Report2011 November Symantec Intelligence Report
2011 November Symantec Intelligence ReportSymantec
 
תגובת הקואליציה להחלטות מועצת מקרקעי ישראל
תגובת הקואליציה להחלטות מועצת מקרקעי ישראלתגובת הקואליציה להחלטות מועצת מקרקעי ישראל
תגובת הקואליציה להחלטות מועצת מקרקעי ישראלacri009
 
These are potential fonts i could use
These are potential fonts i could useThese are potential fonts i could use
These are potential fonts i could usemason1
 
Tics en la educacion
Tics en la educacionTics en la educacion
Tics en la educacion
Abram Roman
 
Ultrasound technician schools in connecticut
Ultrasound technician schools in connecticutUltrasound technician schools in connecticut
Ultrasound technician schools in connecticut
ultrasc2011
 
Millones
MillonesMillones
Millonesc_oby17
 
Prueba 1
Prueba 1Prueba 1
Prueba 1atwelve
 
Pessoas infectadas com o vírus da Aids permanece estável no Brasil.
Pessoas infectadas com o vírus da Aids permanece estável no Brasil.Pessoas infectadas com o vírus da Aids permanece estável no Brasil.
Pessoas infectadas com o vírus da Aids permanece estável no Brasil.
Ministério da Saúde
 
Guerra e pace
Guerra e paceGuerra e pace
Guerra e pace
Luciano De Menna
 
M09_ST
M09_STM09_ST
Tution for indian oil corporation limited – iocl 639 bcw exam 2012 at cheap ...
Tution for indian oil corporation limited – iocl 639 bcw exam 2012  at cheap ...Tution for indian oil corporation limited – iocl 639 bcw exam 2012  at cheap ...
Tution for indian oil corporation limited – iocl 639 bcw exam 2012 at cheap ...Tanay Kumar Das
 
KAD_Newsletter_4.pdf
KAD_Newsletter_4.pdfKAD_Newsletter_4.pdf
KAD_Newsletter_4.pdf
unn | UNITED NEWS NETWORK GmbH
 
Theory of Machine _Dhruv
Theory of Machine _DhruvTheory of Machine _Dhruv
Theory of Machine _DhruvGaganjeet Singh
 
IMPACT OF DYES ON ENVIRONMENT & REMEDIATION
IMPACT OF DYES ON ENVIRONMENT & REMEDIATIONIMPACT OF DYES ON ENVIRONMENT & REMEDIATION
IMPACT OF DYES ON ENVIRONMENT & REMEDIATION
pgayatrinaidu
 
A Benchmark Test on Presto, Spark Sql and Hive on Tez
A Benchmark Test on Presto, Spark Sql and Hive on TezA Benchmark Test on Presto, Spark Sql and Hive on Tez
A Benchmark Test on Presto, Spark Sql and Hive on Tez
Gw Liu
 
Tefen AG - Blue Ocean Strategy
Tefen AG - Blue Ocean StrategyTefen AG - Blue Ocean Strategy
Tefen AG - Blue Ocean Strategytefen1
 

Viewers also liked (20)

2011 November Symantec Intelligence Report
2011 November Symantec Intelligence Report2011 November Symantec Intelligence Report
2011 November Symantec Intelligence Report
 
תגובת הקואליציה להחלטות מועצת מקרקעי ישראל
תגובת הקואליציה להחלטות מועצת מקרקעי ישראלתגובת הקואליציה להחלטות מועצת מקרקעי ישראל
תגובת הקואליציה להחלטות מועצת מקרקעי ישראל
 
These are potential fonts i could use
These are potential fonts i could useThese are potential fonts i could use
These are potential fonts i could use
 
Tics en la educacion
Tics en la educacionTics en la educacion
Tics en la educacion
 
Ultrasound technician schools in connecticut
Ultrasound technician schools in connecticutUltrasound technician schools in connecticut
Ultrasound technician schools in connecticut
 
IMAX Film Dolphins Opens
IMAX Film Dolphins OpensIMAX Film Dolphins Opens
IMAX Film Dolphins Opens
 
Millones
MillonesMillones
Millones
 
Prueba 1
Prueba 1Prueba 1
Prueba 1
 
Pessoas infectadas com o vírus da Aids permanece estável no Brasil.
Pessoas infectadas com o vírus da Aids permanece estável no Brasil.Pessoas infectadas com o vírus da Aids permanece estável no Brasil.
Pessoas infectadas com o vírus da Aids permanece estável no Brasil.
 
Guerra e pace
Guerra e paceGuerra e pace
Guerra e pace
 
M09_ST
M09_STM09_ST
M09_ST
 
Trabajo de computacion
Trabajo de computacionTrabajo de computacion
Trabajo de computacion
 
X
XX
X
 
Tution for indian oil corporation limited – iocl 639 bcw exam 2012 at cheap ...
Tution for indian oil corporation limited – iocl 639 bcw exam 2012  at cheap ...Tution for indian oil corporation limited – iocl 639 bcw exam 2012  at cheap ...
Tution for indian oil corporation limited – iocl 639 bcw exam 2012 at cheap ...
 
KAD_Newsletter_4.pdf
KAD_Newsletter_4.pdfKAD_Newsletter_4.pdf
KAD_Newsletter_4.pdf
 
Theory of Machine _Dhruv
Theory of Machine _DhruvTheory of Machine _Dhruv
Theory of Machine _Dhruv
 
IMPACT OF DYES ON ENVIRONMENT & REMEDIATION
IMPACT OF DYES ON ENVIRONMENT & REMEDIATIONIMPACT OF DYES ON ENVIRONMENT & REMEDIATION
IMPACT OF DYES ON ENVIRONMENT & REMEDIATION
 
A Sociedade Senhorial
A Sociedade SenhorialA Sociedade Senhorial
A Sociedade Senhorial
 
A Benchmark Test on Presto, Spark Sql and Hive on Tez
A Benchmark Test on Presto, Spark Sql and Hive on TezA Benchmark Test on Presto, Spark Sql and Hive on Tez
A Benchmark Test on Presto, Spark Sql and Hive on Tez
 
Tefen AG - Blue Ocean Strategy
Tefen AG - Blue Ocean StrategyTefen AG - Blue Ocean Strategy
Tefen AG - Blue Ocean Strategy
 

Similar to Simplifying RESTful Search- Impetus Webinar

Fundamental Essentials for API Design
Fundamental Essentials for API DesignFundamental Essentials for API Design
Fundamental Essentials for API Design
Michael James Cyrus
 
Fundamental essentials for api design
Fundamental essentials for api designFundamental essentials for api design
Fundamental essentials for api design
Michael James Cyrus
 
Fundamental essentials for api design
Fundamental essentials for api designFundamental essentials for api design
Fundamental essentials for api design
Michael James Cyrus
 
LeVan, "Search Web Services"
LeVan, "Search Web Services"LeVan, "Search Web Services"
Restful web-services
Restful web-servicesRestful web-services
Restful web-services
rporwal
 
R01765113122
R01765113122R01765113122
R01765113122
IOSR Journals
 
Design and Implementation of SOA Enhanced Semantic Information Retrieval web ...
Design and Implementation of SOA Enhanced Semantic Information Retrieval web ...Design and Implementation of SOA Enhanced Semantic Information Retrieval web ...
Design and Implementation of SOA Enhanced Semantic Information Retrieval web ...
iosrjce
 
E-commerce Search Engine with Apache Lucene/Solr
E-commerce Search Engine with Apache Lucene/SolrE-commerce Search Engine with Apache Lucene/Solr
E-commerce Search Engine with Apache Lucene/Solr
Vincenzo D'Amore
 
Modern REST API design principles and rules.pdf
Modern REST API design principles and rules.pdfModern REST API design principles and rules.pdf
Modern REST API design principles and rules.pdf
Aparna Sharma
 
REST Introduction.ppt
REST Introduction.pptREST Introduction.ppt
REST Introduction.ppt
KGSCSEPSGCT
 
REST and RESTful Services
REST and RESTful ServicesREST and RESTful Services
REST and RESTful Services
Damian T. Gordon
 
Restful webservices
Restful webservicesRestful webservices
Restful webservices
Luqman Shareef
 
Implementing Site Search in CQ5 / AEM
Implementing Site Search in CQ5 / AEMImplementing Site Search in CQ5 / AEM
Implementing Site Search in CQ5 / AEM
rtpaem
 
Salesforce REST API
Salesforce  REST API Salesforce  REST API
Salesforce REST API
Bohdan Dovhań
 
Rest API Automation with REST Assured
Rest API Automation with REST AssuredRest API Automation with REST Assured
Rest API Automation with REST Assured
TO THE NEW Pvt. Ltd.
 
Phalcon 2 High Performance APIs - DevWeekPOA 2015
Phalcon 2 High Performance APIs - DevWeekPOA 2015Phalcon 2 High Performance APIs - DevWeekPOA 2015
Phalcon 2 High Performance APIs - DevWeekPOA 2015
Jackson F. de A. Mafra
 
API Testing Basics.pptx
API Testing Basics.pptxAPI Testing Basics.pptx
API Testing Basics.pptx
VikasGupta92111
 
International Journal of Computer Science, Engineering and Information Techno...
International Journal of Computer Science, Engineering and Information Techno...International Journal of Computer Science, Engineering and Information Techno...
International Journal of Computer Science, Engineering and Information Techno...
ijcseit
 
WEB SERVICE DISCOVERY METHODS AND TECHNIQUES: A REVIEW
WEB SERVICE DISCOVERY METHODS AND TECHNIQUES: A REVIEWWEB SERVICE DISCOVERY METHODS AND TECHNIQUES: A REVIEW
WEB SERVICE DISCOVERY METHODS AND TECHNIQUES: A REVIEW
ijcseit
 
Web service discovery methods and techniques a review
Web service discovery methods and techniques a reviewWeb service discovery methods and techniques a review
Web service discovery methods and techniques a review
ijcseit
 

Similar to Simplifying RESTful Search- Impetus Webinar (20)

Fundamental Essentials for API Design
Fundamental Essentials for API DesignFundamental Essentials for API Design
Fundamental Essentials for API Design
 
Fundamental essentials for api design
Fundamental essentials for api designFundamental essentials for api design
Fundamental essentials for api design
 
Fundamental essentials for api design
Fundamental essentials for api designFundamental essentials for api design
Fundamental essentials for api design
 
LeVan, "Search Web Services"
LeVan, "Search Web Services"LeVan, "Search Web Services"
LeVan, "Search Web Services"
 
Restful web-services
Restful web-servicesRestful web-services
Restful web-services
 
R01765113122
R01765113122R01765113122
R01765113122
 
Design and Implementation of SOA Enhanced Semantic Information Retrieval web ...
Design and Implementation of SOA Enhanced Semantic Information Retrieval web ...Design and Implementation of SOA Enhanced Semantic Information Retrieval web ...
Design and Implementation of SOA Enhanced Semantic Information Retrieval web ...
 
E-commerce Search Engine with Apache Lucene/Solr
E-commerce Search Engine with Apache Lucene/SolrE-commerce Search Engine with Apache Lucene/Solr
E-commerce Search Engine with Apache Lucene/Solr
 
Modern REST API design principles and rules.pdf
Modern REST API design principles and rules.pdfModern REST API design principles and rules.pdf
Modern REST API design principles and rules.pdf
 
REST Introduction.ppt
REST Introduction.pptREST Introduction.ppt
REST Introduction.ppt
 
REST and RESTful Services
REST and RESTful ServicesREST and RESTful Services
REST and RESTful Services
 
Restful webservices
Restful webservicesRestful webservices
Restful webservices
 
Implementing Site Search in CQ5 / AEM
Implementing Site Search in CQ5 / AEMImplementing Site Search in CQ5 / AEM
Implementing Site Search in CQ5 / AEM
 
Salesforce REST API
Salesforce  REST API Salesforce  REST API
Salesforce REST API
 
Rest API Automation with REST Assured
Rest API Automation with REST AssuredRest API Automation with REST Assured
Rest API Automation with REST Assured
 
Phalcon 2 High Performance APIs - DevWeekPOA 2015
Phalcon 2 High Performance APIs - DevWeekPOA 2015Phalcon 2 High Performance APIs - DevWeekPOA 2015
Phalcon 2 High Performance APIs - DevWeekPOA 2015
 
API Testing Basics.pptx
API Testing Basics.pptxAPI Testing Basics.pptx
API Testing Basics.pptx
 
International Journal of Computer Science, Engineering and Information Techno...
International Journal of Computer Science, Engineering and Information Techno...International Journal of Computer Science, Engineering and Information Techno...
International Journal of Computer Science, Engineering and Information Techno...
 
WEB SERVICE DISCOVERY METHODS AND TECHNIQUES: A REVIEW
WEB SERVICE DISCOVERY METHODS AND TECHNIQUES: A REVIEWWEB SERVICE DISCOVERY METHODS AND TECHNIQUES: A REVIEW
WEB SERVICE DISCOVERY METHODS AND TECHNIQUES: A REVIEW
 
Web service discovery methods and techniques a review
Web service discovery methods and techniques a reviewWeb service discovery methods and techniques a review
Web service discovery methods and techniques a review
 

More from Impetus Technologies

Data Warehouse Modernization Webinar Series- Critical Trends, Implementation ...
Data Warehouse Modernization Webinar Series- Critical Trends, Implementation ...Data Warehouse Modernization Webinar Series- Critical Trends, Implementation ...
Data Warehouse Modernization Webinar Series- Critical Trends, Implementation ...
Impetus Technologies
 
Future-Proof Your Streaming Analytics Architecture- StreamAnalytix Webinar
Future-Proof Your Streaming Analytics Architecture- StreamAnalytix WebinarFuture-Proof Your Streaming Analytics Architecture- StreamAnalytix Webinar
Future-Proof Your Streaming Analytics Architecture- StreamAnalytix Webinar
Impetus Technologies
 
Building Real-time Streaming Apps in Minutes- Impetus Webinar
Building Real-time Streaming Apps in Minutes- Impetus WebinarBuilding Real-time Streaming Apps in Minutes- Impetus Webinar
Building Real-time Streaming Apps in Minutes- Impetus Webinar
Impetus Technologies
 
Smart Enterprise Big Data Bus for the Modern Responsive Enterprise- StreamAna...
Smart Enterprise Big Data Bus for the Modern Responsive Enterprise- StreamAna...Smart Enterprise Big Data Bus for the Modern Responsive Enterprise- StreamAna...
Smart Enterprise Big Data Bus for the Modern Responsive Enterprise- StreamAna...
Impetus Technologies
 
Impetus White Paper- Handling Data Corruption in Elasticsearch
Impetus White Paper- Handling  Data Corruption  in ElasticsearchImpetus White Paper- Handling  Data Corruption  in Elasticsearch
Impetus White Paper- Handling Data Corruption in Elasticsearch
Impetus Technologies
 
Real-world Applications of Streaming Analytics- StreamAnalytix Webinar
Real-world Applications of Streaming Analytics- StreamAnalytix WebinarReal-world Applications of Streaming Analytics- StreamAnalytix Webinar
Real-world Applications of Streaming Analytics- StreamAnalytix Webinar
Impetus Technologies
 
Real-world Applications of Streaming Analytics- StreamAnalytix Webinar
Real-world Applications of Streaming Analytics- StreamAnalytix WebinarReal-world Applications of Streaming Analytics- StreamAnalytix Webinar
Real-world Applications of Streaming Analytics- StreamAnalytix Webinar
Impetus Technologies
 
Real-time Streaming Analytics for Enterprises based on Apache Storm - Impetus...
Real-time Streaming Analytics for Enterprises based on Apache Storm - Impetus...Real-time Streaming Analytics for Enterprises based on Apache Storm - Impetus...
Real-time Streaming Analytics for Enterprises based on Apache Storm - Impetus...
Impetus Technologies
 
Accelerating Hadoop Solution Lifecycle and Improving ROI- Impetus On-demand W...
Accelerating Hadoop Solution Lifecycle and Improving ROI- Impetus On-demand W...Accelerating Hadoop Solution Lifecycle and Improving ROI- Impetus On-demand W...
Accelerating Hadoop Solution Lifecycle and Improving ROI- Impetus On-demand W...
Impetus Technologies
 
Deep Learning: Evolution of ML from Statistical to Brain-like Computing- Data...
Deep Learning: Evolution of ML from Statistical to Brain-like Computing- Data...Deep Learning: Evolution of ML from Statistical to Brain-like Computing- Data...
Deep Learning: Evolution of ML from Statistical to Brain-like Computing- Data...
Impetus Technologies
 
SPARK USE CASE- Distributed Reinforcement Learning for Electricity Market Bi...
SPARK USE CASE-  Distributed Reinforcement Learning for Electricity Market Bi...SPARK USE CASE-  Distributed Reinforcement Learning for Electricity Market Bi...
SPARK USE CASE- Distributed Reinforcement Learning for Electricity Market Bi...
Impetus Technologies
 
Enterprise Ready Android and Manageability- Impetus Webcast
Enterprise Ready Android and Manageability- Impetus WebcastEnterprise Ready Android and Manageability- Impetus Webcast
Enterprise Ready Android and Manageability- Impetus Webcast
Impetus Technologies
 
Real-time Streaming Analytics: Business Value, Use Cases and Architectural Co...
Real-time Streaming Analytics: Business Value, Use Cases and Architectural Co...Real-time Streaming Analytics: Business Value, Use Cases and Architectural Co...
Real-time Streaming Analytics: Business Value, Use Cases and Architectural Co...
Impetus Technologies
 
Leveraging NoSQL Database Technology to Implement Real-time Data Architecture...
Leveraging NoSQL Database Technology to Implement Real-time Data Architecture...Leveraging NoSQL Database Technology to Implement Real-time Data Architecture...
Leveraging NoSQL Database Technology to Implement Real-time Data Architecture...
Impetus Technologies
 
Maturity of Mobile Test Automation: Approaches and Future Trends- Impetus Web...
Maturity of Mobile Test Automation: Approaches and Future Trends- Impetus Web...Maturity of Mobile Test Automation: Approaches and Future Trends- Impetus Web...
Maturity of Mobile Test Automation: Approaches and Future Trends- Impetus Web...
Impetus Technologies
 
Big Data Analytics with Storm, Spark and GraphLab
Big Data Analytics with Storm, Spark and GraphLabBig Data Analytics with Storm, Spark and GraphLab
Big Data Analytics with Storm, Spark and GraphLab
Impetus Technologies
 
Webinar maturity of mobile test automation- approaches and future trends
Webinar  maturity of mobile test automation- approaches and future trendsWebinar  maturity of mobile test automation- approaches and future trends
Webinar maturity of mobile test automation- approaches and future trendsImpetus Technologies
 
Next generation analytics with yarn, spark and graph lab
Next generation analytics with yarn, spark and graph labNext generation analytics with yarn, spark and graph lab
Next generation analytics with yarn, spark and graph lab
Impetus Technologies
 
The Shared Elephant - Hadoop as a Shared Service for Multiple Departments – I...
The Shared Elephant - Hadoop as a Shared Service for Multiple Departments – I...The Shared Elephant - Hadoop as a Shared Service for Multiple Departments – I...
The Shared Elephant - Hadoop as a Shared Service for Multiple Departments – I...
Impetus Technologies
 
Performance Testing of Big Data Applications - Impetus Webcast
Performance Testing of Big Data Applications - Impetus WebcastPerformance Testing of Big Data Applications - Impetus Webcast
Performance Testing of Big Data Applications - Impetus Webcast
Impetus Technologies
 

More from Impetus Technologies (20)

Data Warehouse Modernization Webinar Series- Critical Trends, Implementation ...
Data Warehouse Modernization Webinar Series- Critical Trends, Implementation ...Data Warehouse Modernization Webinar Series- Critical Trends, Implementation ...
Data Warehouse Modernization Webinar Series- Critical Trends, Implementation ...
 
Future-Proof Your Streaming Analytics Architecture- StreamAnalytix Webinar
Future-Proof Your Streaming Analytics Architecture- StreamAnalytix WebinarFuture-Proof Your Streaming Analytics Architecture- StreamAnalytix Webinar
Future-Proof Your Streaming Analytics Architecture- StreamAnalytix Webinar
 
Building Real-time Streaming Apps in Minutes- Impetus Webinar
Building Real-time Streaming Apps in Minutes- Impetus WebinarBuilding Real-time Streaming Apps in Minutes- Impetus Webinar
Building Real-time Streaming Apps in Minutes- Impetus Webinar
 
Smart Enterprise Big Data Bus for the Modern Responsive Enterprise- StreamAna...
Smart Enterprise Big Data Bus for the Modern Responsive Enterprise- StreamAna...Smart Enterprise Big Data Bus for the Modern Responsive Enterprise- StreamAna...
Smart Enterprise Big Data Bus for the Modern Responsive Enterprise- StreamAna...
 
Impetus White Paper- Handling Data Corruption in Elasticsearch
Impetus White Paper- Handling  Data Corruption  in ElasticsearchImpetus White Paper- Handling  Data Corruption  in Elasticsearch
Impetus White Paper- Handling Data Corruption in Elasticsearch
 
Real-world Applications of Streaming Analytics- StreamAnalytix Webinar
Real-world Applications of Streaming Analytics- StreamAnalytix WebinarReal-world Applications of Streaming Analytics- StreamAnalytix Webinar
Real-world Applications of Streaming Analytics- StreamAnalytix Webinar
 
Real-world Applications of Streaming Analytics- StreamAnalytix Webinar
Real-world Applications of Streaming Analytics- StreamAnalytix WebinarReal-world Applications of Streaming Analytics- StreamAnalytix Webinar
Real-world Applications of Streaming Analytics- StreamAnalytix Webinar
 
Real-time Streaming Analytics for Enterprises based on Apache Storm - Impetus...
Real-time Streaming Analytics for Enterprises based on Apache Storm - Impetus...Real-time Streaming Analytics for Enterprises based on Apache Storm - Impetus...
Real-time Streaming Analytics for Enterprises based on Apache Storm - Impetus...
 
Accelerating Hadoop Solution Lifecycle and Improving ROI- Impetus On-demand W...
Accelerating Hadoop Solution Lifecycle and Improving ROI- Impetus On-demand W...Accelerating Hadoop Solution Lifecycle and Improving ROI- Impetus On-demand W...
Accelerating Hadoop Solution Lifecycle and Improving ROI- Impetus On-demand W...
 
Deep Learning: Evolution of ML from Statistical to Brain-like Computing- Data...
Deep Learning: Evolution of ML from Statistical to Brain-like Computing- Data...Deep Learning: Evolution of ML from Statistical to Brain-like Computing- Data...
Deep Learning: Evolution of ML from Statistical to Brain-like Computing- Data...
 
SPARK USE CASE- Distributed Reinforcement Learning for Electricity Market Bi...
SPARK USE CASE-  Distributed Reinforcement Learning for Electricity Market Bi...SPARK USE CASE-  Distributed Reinforcement Learning for Electricity Market Bi...
SPARK USE CASE- Distributed Reinforcement Learning for Electricity Market Bi...
 
Enterprise Ready Android and Manageability- Impetus Webcast
Enterprise Ready Android and Manageability- Impetus WebcastEnterprise Ready Android and Manageability- Impetus Webcast
Enterprise Ready Android and Manageability- Impetus Webcast
 
Real-time Streaming Analytics: Business Value, Use Cases and Architectural Co...
Real-time Streaming Analytics: Business Value, Use Cases and Architectural Co...Real-time Streaming Analytics: Business Value, Use Cases and Architectural Co...
Real-time Streaming Analytics: Business Value, Use Cases and Architectural Co...
 
Leveraging NoSQL Database Technology to Implement Real-time Data Architecture...
Leveraging NoSQL Database Technology to Implement Real-time Data Architecture...Leveraging NoSQL Database Technology to Implement Real-time Data Architecture...
Leveraging NoSQL Database Technology to Implement Real-time Data Architecture...
 
Maturity of Mobile Test Automation: Approaches and Future Trends- Impetus Web...
Maturity of Mobile Test Automation: Approaches and Future Trends- Impetus Web...Maturity of Mobile Test Automation: Approaches and Future Trends- Impetus Web...
Maturity of Mobile Test Automation: Approaches and Future Trends- Impetus Web...
 
Big Data Analytics with Storm, Spark and GraphLab
Big Data Analytics with Storm, Spark and GraphLabBig Data Analytics with Storm, Spark and GraphLab
Big Data Analytics with Storm, Spark and GraphLab
 
Webinar maturity of mobile test automation- approaches and future trends
Webinar  maturity of mobile test automation- approaches and future trendsWebinar  maturity of mobile test automation- approaches and future trends
Webinar maturity of mobile test automation- approaches and future trends
 
Next generation analytics with yarn, spark and graph lab
Next generation analytics with yarn, spark and graph labNext generation analytics with yarn, spark and graph lab
Next generation analytics with yarn, spark and graph lab
 
The Shared Elephant - Hadoop as a Shared Service for Multiple Departments – I...
The Shared Elephant - Hadoop as a Shared Service for Multiple Departments – I...The Shared Elephant - Hadoop as a Shared Service for Multiple Departments – I...
The Shared Elephant - Hadoop as a Shared Service for Multiple Departments – I...
 
Performance Testing of Big Data Applications - Impetus Webcast
Performance Testing of Big Data Applications - Impetus WebcastPerformance Testing of Big Data Applications - Impetus Webcast
Performance Testing of Big Data Applications - Impetus Webcast
 

Recently uploaded

State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 

Recently uploaded (20)

State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 

Simplifying RESTful Search- Impetus Webinar

  • 1. WHITE PAPER Simplifying RESTful Search Abstract This white paper talks about how search over REST can be simplified. We are not aiming at developing standards for RESTful search, but will be discussing how this problem can be approached. Impetus Technologies Inc. www.impetus.com January 2012
  • 2. Simplifying RESTful Search Table of Contents Introduction ........................................................................................................... 2 Search Requirements ............................................................................................. 3 HTTP Method Selection ......................................................................................... 4 URL Representation ............................................................................................... 4 Query Criteria vs. Embedded Criteria ................................................................ 4 Modeling Filter Criteria ...................................................................................... 5 Feed Item Query Language (FIQL) ..................................................................... 5 Resource Query Language (RQL) ....................................................................... 5 Case study: Apache CXF advance search features ................................................. 6 Summary ................................................................................................................ 7 Introduction The REST architectural pattern is based around two basic principles: 1. Resources as URLs: A resource is something like an entity or a noun in modeling language. Anything on the web is identified as a resource and each unique resource is identified by a unique URL. 2. Operations as HTTP methods: REST leverages existing HTTP methods, particularly GET, PUT, POST, and DELETE which map to a resource’s read, create, modify and removal operations, respectively. Any action performed by a client over HTTP, contains a URL and an HTTP method. The URL represents the resource and the HTTP method represents the action which needs to be performed over the resource. Being a broad architectural style, REST always has different interpretations. The ambiguity is exacerbated by the fact that there are not nearly enough HTTP methods to support common operations. One of the most common examples is the lack of a ‘search’ method. While search is one of the most extensively used features across different applications, there have been no standards for implementing this feature. Due to this, people tend to design search in different ways. Given that REST aims to unify service architecture, any ambiguity must be seen as weakening the argument for REST. 2
  • 3. Simplifying RESTful Search Search Requirements Search is the most used feature across different web applications, and supports almost similar features around different applications. Listed below are some of the common constituents of search features: • Search based on one or more criteria at a time - Search red colored cars of type hatchback color=red && type=hatchback • Relational and conditional operator support - Search red or black car with mileage greater than 10 Colour=red|black&& mileage > 10 • Wild card search - Search car manufactured from company name starting with M company=M* • Pagination - List all cars but fetch 100 results at a time upperLimit=200 &&lowerLimit=101 • Range searches - Get me all the cars launched between 2000 and 2010 launch year between (2000, 2010) When we support search with such features, the search interface design itself becomes complex. And when implemented in a REST framework, meeting all these requirements (whilestill conforming to REST!) is challenging. Coming back to the basic REST principles, there are two questions that need to be answered: 1. Which HTTP method should be used for ‘search’? 2. How can an effective resource URL be created for search? a. Query parameters versus Embedded URLs b. Modeling filter criteria 3
  • 4. Simplifying RESTful Search HTTP Method Selection Effectively, REST categorizes operations by their nature and associates well- defined semantics with these categories. The idempotent operations are GET, PUT, and DELETE (GET for read-only, PUT for update, DELETE for remove), while the POST method is used for non-idempotent procedures like create. By definition itself, search is a read only operation, which is used to request for a collection of resources, filtered and based on some criteria. Therefore, the GET HTTP method for the search feature is an obvious choice. However, with GET, there is a constraint with respect to URL size if complex criteria are added in the URL. URL Representation Query Criteria vs. Embedded Criteria It is important to discuss this using an example. Say a user wishes to search for four-doored sedan cars of blue color? What will the resource URL for this request look like? Indicated below are two URLs that are syntactically different but semantically the same: • /cars/?color=blue&type=sedan&doors=4 • /cars/color:blue/type:sedan/doors:4 Both of the above URLs conform to the RESTful way of representing a resource query, but are represented differently. While the first one uses the URL query criteria to add filtering details, the latter follows an embedded URL approach. The embedded URL approach is more readable and can take advantage of the native caching mechanisms that exist on the web server for HTTP traffic. However, this approach limits the user to provide parameters in a specific order. Wrong parameter positions will cause an error or unwanted behavior. The two instructions stated below look the same, but may not give the correct results • /cars/color:red/type:sedan • /cars/type:sedan/color:red Also, since there is no standardization for embedding criteria, people can device their own ways of representation. It is imperative therefore, to consider the query criteria approach over the embedded URL approach, though the representation is a bit complex and lacks readability. 4
  • 5. Simplifying RESTful Search Modeling Filter Criteria A search-results page is fundamentally RESTful even though its URL identifies a query. The URL can incorporate SQL-like elements. While SQL is meant to filter data fetched from the relational data, the new modeling language can filter data from the hierarchical set of resources. This language can help in devising a mechanism to communicate complex search requirements over URLs. In this section, two such styles are discussed in detail. Feed Item Query Language (FIQL) The Feed Item Query Language (FIQL, pronounced ‘fickle’) is a simple but flexible, URI-friendly syntax for expressing filters across the entries in a syndicated feed. These filter expressions can be mapped at any RESTful service and help in modeling complex filters. Provided below are some samples of such web URLs against their respective SQLs. SQL REST Search URLs select * from actors where /actors?_s=firstname==PENELOPE;lastname firstname=’PENELOPE’ and ==GUINESS lastname=’GUINESS’ select * from actors where lastname /actors?_s=lastname==PEN* like ‘PEN%’ select * from films where filmid=1 /films?_s=filmid==1;rentalduration!=0 and rentalduration<> 0 select * from films where filmid>= /films?_s=filmid=ge=995 995 select * from films where release /film?_s=releasedate=le=2005-05- date < ‘27/05/2005’ 27T00:00:00.000%2B00:00 Resource Query Language (RQL) Resource Query Language (RQL) defines a syntactically simple query language for querying and retrieving resources. RQL is designed to be URI-friendly, particularly as a query component of a URI, and highly extensible. RQL is a superset of HTML’s URL encoding of form values, and a superset of Feed Item Query Language (FIQL). RQL basically consists of a set of nestable named operators which each have a set of arguments and operate on a collection of resources. 5
  • 6. Simplifying RESTful Search Case study: Apache CXF advance search features To support advance search capabilities, Apache CXF introduced FIQL support with its JAX-RS implementation since the 2.3.0 release. With this feature, users can now express complex search expressions using URI. Provided below is a detailed note on how this feature can be used. To work with FIQL queries, a SearchContext needs be injected into an application code and used to retrieve a SearchCondition representing the current FIQL query. This SearchCondition can be used in a number of ways for finding the matching data. @Path("books") public class Books { private Map<Long, Book> books; @Context private SearchContext context; @GET public List<Book>getBook() { SearchCondition<Book>sc = searchContext.getCondition(Book.class); //SearchConditionismet method can also be used to build a list of matching beans // iterate over all the values in the books map and return a collection of matching beans List<Book> found = sc.findAll(books.values()); return found; } } The SearchCondition can also be used to get to all the search requirements (originally expressed in FIQL) and do some manual comparisons against the local data. SearchCondition for instance, provides a utility to the SQL(String tableName, String... columnNames) method which internally introspects all the search expressions constituting a current query and converts them into an SQL expression: // find all conditions with names starting from 'ami' // and levels greater than 10 : // ?_s="name==ami*;level=gt=10" SearchCondition<Book>sc = searchContext.getCondition(Book.class); assertEquals("SELECT * FROM table WHERE name LIKE 'ami%' AND level > '10'", sq.toSQL("table")); 6
  • 7. Simplifying RESTful Search Summary Data querying is a critical component of most applications. With the advance of rich, client-driven Ajax applications and document oriented databases, new querying techniques are needed; these techniques must be simple but extensible, designed to work within URIs and query for collections of resources. The NoSQL movement is opening the way for a more modular approach to databases, and separating out modeling, validation, and querying concerns from storage concerns. What is needed however, are new querying approaches to match more modern architectural design. About Impetus Impetus Technologies offers Product Engineering and Technology R&D services for software product development. With ongoing investments in research and application of emerging technology areas, innovative business models, and an agile approach, we partner with our client base comprising large scale ISVs and technology innovators to deliver cutting-edge software products. Our expertise spans the domains of Big Data, SaaS, Cloud Computing, Mobility Solutions, Test Engineering, Performance Engineering, and Social Media among others. Impetus Technologies, Inc. 5300 Stevens Creek Boulevard, Suite 450, San Jose, CA 95129, USA Tel: 408.252.7111 | Email: inquiry@impetus.com Regional Development Centers - INDIA: • New Delhi • Bangalore • Indore • Hyderabad To know more visit: www.impetus.com Disclaimers The information contained in this document is the proprietary and exclusive property of Impetus Technologies Inc. except as otherwise indicated. No part of this document, in whole or in part, may be reproduced, stored, transmitted, or used for design purposes without the prior written permission of Impetus Technologies Inc. 7