23
(ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing Jon Hurley Senior Manager, Platform R&D [email protected]

(ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing

Embed Size (px)

DESCRIPTION

Accelrys Enterprise Platform 9.0 includes some significant enhancements to support the deployment of Pipeline Pilot protocols as web services. This session will bring you up to date on the different styles of web service and options for deployment to end users and web service clients. You will also learn about techniques for publishing services using a standard REST-based model. The session will focus on practical demonstrations of taking Pipeline Pilot protocols and delivering them as REST-based web services.

Citation preview

Page 1: (ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing

(ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing

Jon Hurley

Senior Manager, Platform R&D

[email protected]

Page 2: (ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing

The information on the roadmap and future software development efforts are intended to outline general product direction and should not be relied on in making a purchasing decision.

Page 3: (ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing

• Configuring Protocols as Service Endpoints

• REST

• Protocols as RESTful services

• Long Running Jobs

Summary

Page 4: (ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing

Pipeline Pilot Integration Points

DBs

Pipeline Pilot Enterprise Server

Protocol Runtime Environment

VB Script (On

Client)

Run Program

Java Perl Python VB Script

(On Server)

Admin Portal Help Portal Web Apps Web Services API

.NET SOAP &

HTTP Telnet /

FTP SSH / SCP

ODBC / JDBC

VB Script Cmd Line Java

Classes Perl

Scripts .NET

Classes

REST Service

SOAP Service

Cmd Line Server Integration Extend pipelines with new components that integrate your code, data and services.

Professional Client

Run Protocol Command Line

Client

Web Browser

Web Port

JavaScript Client SDK

JavaScript Client

.NET Client SDK

.NET Client

Java Client SDK

Java Client

SOAP Client

Client Integration Build clients that connect to Pipeline Pilot and run protocol services.

HTTP Client

Page 5: (ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing

Http

SOAP APIs

Web Services API & Client SDKs

XML Protocol Database

Java SDK

Allows cross-platform access to Pipeline Pilot services

Java Servlets, JSP Java Applications

.NET Applications

Web Applications

Perl SOAP::Lite & other SOAP libs

JavaScript SDK

.NET SDK Pipeline Pilot Server

Browsers, Http Clients

Client Server

Authentication Layer

Page 6: (ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing

• Mapping protocols to Web Services

– “Visual” Services

– Parameter Style

– Document Style

Protocols as Web Services

Page 7: (ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing

• Representational State Transfer

• Typically pass documents (eg XML, JSON) between client & server that represent state of a resource

• Uses existing verbs rather than creating arbitrary function names – GET, PUT, POST, DELETE

• Resources identified by URI, so URI mapping required to underlying functions

RESTful Services

Page 8: (ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing

8

RESTful URIS refer to resources

Two types of URIs Collection - http://example.com/compounds/

Element - http://example.com/compounds/acc123456

5 Common Methods

Method Purpose

GET For retrieving a data resource or a resource collection

POST For creating a new resource

PUT For replacing a resource

PATCH For updating resource content

DELETE For removing a resource

RESTful URIs

Page 9: (ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing

9

• Collection of animals

• Stored in a cache loaded from ‘data/Tables/zoo.txt’

• List, edit, delete animal records

• Set of protocols that are exposed as RESTful services

• Demonstrated using the Chrome Browser ‘Advanced Rest Client’

Zoo Examples

Page 10: (ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing

• Accessing a protocol service from REST browser plugin

Demo

Page 11: (ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing

11

http://{server}/zoology/animals/

[

{"id":1,"animalname":"aardvark"},

{"id":2,"animalname":"antelope"},

{"id":3,"animalname":"bass"},

{"id":4,"animalname":"bear"},

List Service

Page 12: (ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing

12

http://{server}/zoology/animals/1

[

{"id":"1","animalname":"aardvark","type

":"mammal","milk":"1","legs":"4","tail"

:"0","eggs":"0","feathers":"0"}

]

Individual Animal Service

Page 13: (ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing

13

http://{server}/zoology/banimals/

[

{"id":3,"animalname":"bass"},

{"id":4,"animalname":"bear"},

{"id":5,"animalname":"boar"},

{"id":6,"animalname":"buffalo"}

]

List the ‘B’ Animals

Page 14: (ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing

14

http://{server}/zoology/canimals/xml

<?xml version="1.0" encoding="UTF-8"?>

<animals>

<animal id="7" animalname="calf" />

<animal id="8" animalname="carp" />

<animal id="9" animalname="catfish" />

<animal id="10" animalname="cavy" />

</animals>

List the Animals with an XML format

Page 15: (ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing

15

• URL Route definitions are provided in package files

• In your package define the routes in a urls.conf file

• Include a reference to this file in package.conf:

# URL routing configuration

Include $(package)/urls.conf

Defining URL Routes

Page 16: (ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing

16

<url REST AUTH>

method GET

request /zoology/animals/

protocol Protocols/Web Services/AcclDev/zoo/Actions/animal/List

summary List all animals in the zoo.

<url>

request /zoology/banimals/

param NameFilter B

querystring Off

summary List all animals whose name starts with the letter B.

</url>

</url>

Defining URL Routes

Page 17: (ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing

17

List Protocol

Reviewing RESTful service protocols

Page 18: (ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing

18

• Add new animals • POST: {root}/zoology/animals/ • Header: Content-type: application/json • By default the body is stored in the first parameter on the

protocol (override with _bodyParam in URL route) • Edit an existing animal

• PUT: http://meteorbs:9944/zoology/animals/

• With full data record • PATCH: http://meteorbs:9944/zoology/animals/

• With partial data record

Some Edit URLs

Page 19: (ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing

19

• Services can use these methods to control the return format

• Accept Header

• Accept: application/json

• Format Query String argument

• http://{server}/zoology/formanimals/1

• OR

• http://{server}/zoology/formanimals/1?format=xml

• Overrides the format from the Accept header

Specifying the return format

Page 20: (ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing

20

If the action may take more than a few seconds to run then make it a long running job so it can be polled from the client.

In package.conf

<url>

method GET

request /myapp/slowjob

protocol Protocols/Examples/My Protocol

param _blocking 0

</url>

A Long Running Job

Page 21: (ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing

21

Running Job RESTful URLs

Method URL path Description

GET /jobs/ List of the current user’s jobs GET /jobs/job-id Details for the specified job GET /jobs/job-id/status Status code for the job (e.g. running) GET /jobs/job-id/files List of links to job directory files GET /jobs/job-id/results Results of the job DELETE /jobs/job-id Release the job (terminate if still running) DELETE /jobs/job-id/stop Stop the current job

Page 22: (ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing

22

• Use JSON Reader (or XML Reader) or HTTP Connector

• E.g. $(ServerRoot)/zoology/animals/

Accessing RESTful services from Protocols

Page 23: (ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing

• Package developers can configure RESTful endpoints for protocols

• Next Steps

– Get the demo package with which to experiment • testpkg-svc1

– aep_restful_web_services.pdf

Summary