SlideShare une entreprise Scribd logo
1  sur  97
Télécharger pour lire hors ligne
Take a Groovy REST!
by Guillaume Laforge
@glaforge
Take a Groovy REST
Promo Code: ctwjavaone
http://www.manning.com/koenig2/
GROOVY
IN ACTION
2ND EDITION
We know
about
APIs!
http://restlet.com
We know
about
APIs!
http://restlet.com
@glaforge
APISpark — sign-up!
4
http://restlet.com
Take a Groovy REST
Quick intro to REST
ROY FIELDING
RESTDISSERTATION
ROY FIELDING
RESTDISSERTATION
Principled design
of the modern
Web architecture
@glaforge
Representational State Transfer
Architectural properties
• Performance
• Scalability
• Simplicity
• Modifiability
• Visibility
• Portability
• Reliability
Architectural constraints
• Client-server
• Stateless
• Cacheable
• Layered system
• Code on demand (optional)
• Uniform interface
8
@glaforge
REST — Uniform interface
• Identification of resources
• Manipulation of resources 

through representations
• Self-descriptive messages
• HATEOAS 

(Hypermedia As The Engine 

Of Application State)
9
@glaforge
REST — Uniform interface
• Identification of resources
• Manipulation of resources 

through representations
• Self-descriptive messages
• HATEOAS 

(Hypermedia As The Engine 

Of Application State)
9
Resource as URIs
http://api.co/cars/123
@glaforge
REST — Uniform interface
• Identification of resources
• Manipulation of resources 

through representations
• Self-descriptive messages
• HATEOAS 

(Hypermedia As The Engine 

Of Application State)
9
Resource as URIs
http://api.co/cars/123
JSON, XML…
@glaforge
REST — Uniform interface
• Identification of resources
• Manipulation of resources 

through representations
• Self-descriptive messages
• HATEOAS 

(Hypermedia As The Engine 

Of Application State)
9
Resource as URIs
http://api.co/cars/123
JSON, XML…
HTTP GET, POST, PUT, DELETE
media types, cacheability…
@glaforge
REST — Uniform interface
• Identification of resources
• Manipulation of resources 

through representations
• Self-descriptive messages
• HATEOAS 

(Hypermedia As The Engine 

Of Application State)
9
Resource as URIs
http://api.co/cars/123
JSON, XML…
HTTP GET, POST, PUT, DELETE
media types, cacheability…
Hypermedia APIs
HAL, JSON-LD, Siren…
@glaforge
HTTP methods / URIs for collection/item
10
GET
POST
PUT
DELETE
http://api.co/v2/cars/ http://api.co/v2/cars/1234
List all the cars Retrieve an individual car
Create a new car
Replace the entire collection
with a whole new list of cars
Replace or create
an individual car
Delete all the cars Delete an individual car
@glaforge
Common HTTP Status Codes — 1xx
11
@glaforge
Common HTTP Status Codes — 2xx
12
@glaforge
Common HTTP Status Codes — 2xx
12
@glaforge
Common HTTP Status Codes — 2xx
12
@glaforge
Common HTTP Status Codes — 2xx
12
@glaforge
Common HTTP Status Codes — 2xx
12
@glaforge
Common HTTP Status Codes — 2xx
12
@glaforge
Common HTTP Status Codes — 3xx
13
@glaforge
Common HTTP Status Codes — 3xx
13
@glaforge
Common HTTP Status Codes — 3xx
13
@glaforge
Common HTTP Status Codes — 3xx
13
@glaforge
Common HTTP Status Codes — 3xx
13
@glaforge
Common HTTP Status Codes — 3xx
13
@glaforge
Common HTTP Status Codes — 4xx
14
@glaforge
Common HTTP Status Codes — 4xx
14
@glaforge
Common HTTP Status Codes — 4xx
14
@glaforge
Common HTTP Status Codes — 4xx
14
@glaforge
Common HTTP Status Codes — 4xx
14
@glaforge
Common HTTP Status Codes — 4xx
14
@glaforge
Common HTTP Status Codes — 5xx
15
@glaforge
Common HTTP Status Codes — 5xx
15
@glaforge
Common HTTP Status Codes — 5xx
15
@glaforge
Common HTTP Status Codes — 5xx
15
REST — Server-side
@glaforge
Solutions for your REST backend
• Grails
• Ratpack
• Spring Boot
• gServ
• Restlet Framework
• any other 

Web framework!
17
Take a Groovy REST
May the Groovy
force be with you!
@glaforge
gServ
19
def gserv = new GServ()



def bkResource = gserv.resource("/people") {

get ":id", { id ->

def person = personService.get( id )

writeJson person

}



get "/", { ->

def persons = personService.all()

responseHeader "content-type", "application/json"

writeJSON persons

}

}



gserv.http {

static_root '/public/webapp'

get '/faq', file("App.faq.html")



}.start(8080)
@glaforge
Restlet Framework
20
@GrabResolver('http://maven.restlet.com')

@Grab('org.restlet.jse:org.restlet:2.3.2')

import org.restlet.*

import org.restlet.resource.*

import org.restlet.data.*

import org.restlet.routing.*

import static org.restlet.data.MediaType.*



class PeopleResource extends ServerResource {

@Get('json')

String toString() { "{'name': 'Luke Skywalker’}" }

}



new Server(Protocol.HTTP, 8183, PeopleResource).with { server ->

start()

new Router(server.context).attach("/people/{user}", PeopleResource)



assert new ClientResource('http://localhost:8183/people/1')

.get(APPLICATION_JSON).text.contains('Luke Skywalker')



stop()

}
@glaforge
Restlet Framework
20
@GrabResolver('http://maven.restlet.com')

@Grab('org.restlet.jse:org.restlet:2.3.2')

import org.restlet.*

import org.restlet.resource.*

import org.restlet.data.*

import org.restlet.routing.*

import static org.restlet.data.MediaType.*



class PeopleResource extends ServerResource {

@Get('json')

String toString() { "{'name': 'Luke Skywalker’}" }

}



new Server(Protocol.HTTP, 8183, PeopleResource).with { server ->

start()

new Router(server.context).attach("/people/{user}", PeopleResource)



assert new ClientResource('http://localhost:8183/people/1')

.get(APPLICATION_JSON).text.contains('Luke Skywalker')



stop()

}
Starts in
milliseconds
@glaforge
Ratpack
21
@Grab('io.ratpack:ratpack-groovy:0.9.17')

import static ratpack.groovy.Groovy.ratpack

import static groovy.json.JsonOutput.toJson



ratpack {

handlers {

get("/people/:id") {

respond byContent.json {

response.send toJson(

[name: 'Luke Skywalker'])

}

}

}

}
@glaforge
Ratpack
21
@Grab('io.ratpack:ratpack-groovy:0.9.17')

import static ratpack.groovy.Groovy.ratpack

import static groovy.json.JsonOutput.toJson



ratpack {

handlers {

get("/people/:id") {

respond byContent.json {

response.send toJson(

[name: 'Luke Skywalker'])

}

}

}

}
Booh! Ratpack
0.9.17???
@glaforge
Ratpack 1.0 is out!
22
@glaforge
Ratpack
23
@Grab(’org.slf4j:slf4j-simple:1.7.12’)
@Grab(’io.ratpack:ratpack-groovy:1.0.0’)
import static ratpack.groovy.Groovy.ratpack
import static ratpack.groovy.Groovy.htmlBuilder as h
import static ratpack.jackson.Jackson.json as j
ratpack {
handlers {
get { render "foo"}
get("people/:id") {
byContent {
json {
render j(name: "Luke Skywalker")
}
html {
render h {
p "Luke Skywalker"
}
}
@glaforge
Ratpack
24
Take a Groovy REST
Beep, let’s move to
the client side of the
REST force!
REST client-side
REST client-side
@glaforge
REST clients — Web, Java, Android
Web browser

(client-side JavaScript)
• Raw AJAX, jQuery
• Angular’s http request,
Restangular
• Restful.js
+ GrooScript! :-)
Java-based app 

(Android or Java backend)
• Groovy wslite
• Groovy HTTPBuilder
• RetroFit / OkHttp
• Restlet Framework
27
WEB
@glaforge
Restful.js (+ GrooScript ?)
29
JAVA
JAVA& GROOVY
@glaforge
new URL(‘…’).text… or not?
31
'https://starwars.apispark.net/v1/people/1'.toURL().text
@glaforge
new URL(‘…’).text… or not?
31
'https://starwars.apispark.net/v1/people/1'.toURL().text
getText() will do
an HTTP GET
on the URL
403
403The API doesn’t
accept a Java user
agent
@glaforge
Know your GDK!
33
@glaforge
new URL(‘…’).text… take 2!
34
'https://starwars.apispark.net/v1/people/1'

.toURL()

.getText(requestProperties:

['User-Agent': 'Firefox', 

'Accept' : 'application/json'])
@glaforge
new URL(‘…’).text… take 2!
34
'https://starwars.apispark.net/v1/people/1'

.toURL()

.getText(requestProperties:

['User-Agent': 'Firefox', 

'Accept' : 'application/json'])
Let’s ask for
JSON payload
@glaforge
Now JSON-parsed…
35
import groovy.json.*



assert new JsonSlurper().parseText(

'https://starwars.apispark.net/v1/people/1'

.toURL()

.getText(requestProperties:

['User-Agent': 'Firefox', 

'Accept': 'application/json'])

).name == 'Luke Skywalker'
@glaforge
…and spockified!
36
class StarWars extends Specification {

def "retrieve Luke"() {

given: "a URL to the resource"

def url = 'https://starwars.apispark.net/v1'.toURL()



when: "I retrieve and parse the people/1"

def parsed = url.getText(requestProperties:

['User-Agent': 'Firefox', 

'Accept': 'application/json'])



then: "I expect to get Luke"

parsed.contains "Luke Skywalker"

}

}
@glaforge
…and spockified!
36
class StarWars extends Specification {

def "retrieve Luke"() {

given: "a URL to the resource"

def url = 'https://starwars.apispark.net/v1'.toURL()



when: "I retrieve and parse the people/1"

def parsed = url.getText(requestProperties:

['User-Agent': 'Firefox', 

'Accept': 'application/json'])



then: "I expect to get Luke"

parsed.contains "Luke Skywalker"

}

}
Neat for GET,
but not other
methods
supported
@glaforge
…and spockified!
36
class StarWars extends Specification {

def "retrieve Luke"() {

given: "a URL to the resource"

def url = 'https://starwars.apispark.net/v1'.toURL()



when: "I retrieve and parse the people/1"

def parsed = url.getText(requestProperties:

['User-Agent': 'Firefox', 

'Accept': 'application/json'])



then: "I expect to get Luke"

parsed.contains "Luke Skywalker"

}

}
Neat for GET,
but not other
methods
supported
Raw text, no
JSON parsing
@glaforge
Groovy wslite
37
@Grab('com.github.groovy-wslite:groovy-wslite:1.1.0')

import wslite.rest.*

import wslite.http.*



class StarWars3 extends Specification {

static endpoint = 'https://starwars.apispark.net/v1'



def "retrieve Luke"() {

given: "a connection to the API"

def client = new RESTClient(endpoint)



when: "I retrieve the people/1"

def result = client.get(path: '/people/1', headers:

['User-Agent': 'Firefox', 'Accept': 'application/json'])



then: "I expect to get Luke"

result.json.name == "Luke Skywalker"

}

}
@glaforge
Groovy wslite
37
@Grab('com.github.groovy-wslite:groovy-wslite:1.1.0')

import wslite.rest.*

import wslite.http.*



class StarWars3 extends Specification {

static endpoint = 'https://starwars.apispark.net/v1'



def "retrieve Luke"() {

given: "a connection to the API"

def client = new RESTClient(endpoint)



when: "I retrieve the people/1"

def result = client.get(path: '/people/1', headers:

['User-Agent': 'Firefox', 'Accept': 'application/json'])



then: "I expect to get Luke"

result.json.name == "Luke Skywalker"

}

}
Transparent
JSON parsing
@glaforge
Groovy wslite
38


















def client = new RESTClient(endpoint)





def result = client.get(path: '/people/1', headers:

['User-Agent': 'Firefox', 'Accept': 'application/json'])





result.json.name == "Luke Skywalker"



@glaforge
Groovy HTTPBuilder
39
@Grab('org.codehaus.groovy.modules.http-builder:http-builder:0.7.1')

import groovyx.net.http.RESTClient

import static groovyx.net.http.ContentType.JSON



class StarWars4 extends Specification {

static endpoint = 'https://starwars.apispark.net/v1/'



def "retrieve Luke"() {

given: "a connection to the API"

def client = new RESTClient(endpoint)



when: "I retrieve the people/1"

def result = client.get(path: ‘people/1', contentType: JSON,

headers: ['User-Agent': 'Firefox'])



then: "I expect to get Luke"

result.data.name == "Luke Skywalker"

}

}
@glaforge
Groovy HTTPBuilder
40


















def client = new RESTClient(endpoint)





def result = client.get(path: ‘people/1', contentType: JSON,

headers: ['User-Agent': 'Firefox'])





result.data.name == "Luke Skywalker"



@glaforge
Restlet Framework client
41
@GrabResolver('http://maven.restlet.com')

@Grab('org.restlet.jse:org.restlet:2.3.2')

import org.restlet.resource.*

import static org.restlet.data.MediaType.*



class StarWars extends Specification {

static endpoint = 'https://starwars.apispark.net/v1'



def "retrieve Luke"() {

given: "I create a people resource"

def resource = new ClientResource("${endpoint}/people/1")



when: "I retrieve the resource"

def representation = resource.get(APPLICATION_JSON)



then: "I expect that resource to be Luke!"

representation.text.contains "Luke Skywalker"

}

}
@glaforge
Restlet Framework client
41
@GrabResolver('http://maven.restlet.com')

@Grab('org.restlet.jse:org.restlet:2.3.2')

import org.restlet.resource.*

import static org.restlet.data.MediaType.*



class StarWars extends Specification {

static endpoint = 'https://starwars.apispark.net/v1'



def "retrieve Luke"() {

given: "I create a people resource"

def resource = new ClientResource("${endpoint}/people/1")



when: "I retrieve the resource"

def representation = resource.get(APPLICATION_JSON)



then: "I expect that resource to be Luke!"

representation.text.contains "Luke Skywalker"

}

}
Raw text, no
JSON parsing
@glaforge
Restlet Framework client
42




















def resource = new ClientResource("${endpoint}/people/1")





def representation = resource.get(APPLICATION_JSON)





representation.text.contains "Luke Skywalker"



@glaforge
RetroFit
43
@Grab('com.squareup.retrofit:retrofit:1.9.0')

import retrofit.*

import retrofit.http.*



interface StarWarsService {

@Headers(["Accept: application/json",

"User-Agent: Firefox"])

@Get('/people/{id}')

People retrieve(@Path('id') String id)

}



class People { String name }



def restAdapter = new RestAdapter.Builder()

.setEndpoint('https://starwars.apispark.net/v1/')
.build()



def service = restAdapter.create(StarWarsService)

assert service.retrieve('1').name == 'Luke Skywalker'
Miscellaneous
Miscellaneous
@glaforge
DHC by Restlet
45
@glaforge
DHC by Restlet
45
http://bit.ly/dhctuto
@glaforge
httpie
46
@glaforge
REST-assured
47
@Grab('com.jayway.restassured:rest-assured:2.4.1')

import static com.jayway.restassured.RestAssured.*

import static org.hamcrest.Matchers.*



when().

get('https://starwars.apispark.net/v1/people/1').

then().

statusCode(200).

body('name', equalTo('Luke Skywalker')).

body('gender', equalTo('male'))
@glaforge
REST-assured — a Spock approach
48
@Grab('org.spockframework:spock-core:1.0-groovy-2.4')

import spock.lang.*



@Grab('com.jayway.restassured:rest-assured:2.4.1')

import static com.jayway.restassured.RestAssured.*

import static org.hamcrest.Matchers.*



class starwars_rest_assured_spock extends Specification {

def "rest assured and spock"() {

expect:

get('https://starwars.apispark.net/v1/people/1').then().with {

statusCode 200

body 'name', equalTo('Luke Skywalker')

}

}

}
@glaforge
Runscope
49
@glaforge
Mockbin
50
@glaforge
Httpbin
51
@glaforge
Requestb.in
52
Take a Groovy REST
Arg! The Groovy REST
force is too strong!
Thanks for your attention!
Questions & Answers
@glaforge 56
Help us move Groovy forward!
Thanks!
Take a Groovy REST!
@glaforge

Contenu connexe

Tendances

Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1Henry S
 
Middleware in Golang: InVision's Rye
Middleware in Golang: InVision's RyeMiddleware in Golang: InVision's Rye
Middleware in Golang: InVision's RyeCale Hoopes
 
05 integrate redis
05 integrate redis05 integrate redis
05 integrate redisErhwen Kuo
 
GlueCon 2015 - Publish your SQL data as web APIs
GlueCon 2015 - Publish your SQL data as web APIsGlueCon 2015 - Publish your SQL data as web APIs
GlueCon 2015 - Publish your SQL data as web APIsRestlet
 
Introduction to GraphQL
Introduction to GraphQLIntroduction to GraphQL
Introduction to GraphQLBrainhub
 
How web works and browser works ? (behind the scenes)
How web works and browser works ? (behind the scenes)How web works and browser works ? (behind the scenes)
How web works and browser works ? (behind the scenes)Vibhor Grover
 
Mongodb at-gilt-groupe-seattle-2012-09-14-final
Mongodb at-gilt-groupe-seattle-2012-09-14-finalMongodb at-gilt-groupe-seattle-2012-09-14-final
Mongodb at-gilt-groupe-seattle-2012-09-14-finalMongoDB
 
ASP.NET Web API and HTTP Fundamentals
ASP.NET Web API and HTTP FundamentalsASP.NET Web API and HTTP Fundamentals
ASP.NET Web API and HTTP FundamentalsIdo Flatow
 
Test in Rest. API testing with the help of Rest Assured.
Test in Rest. API testing with the help of  Rest Assured.Test in Rest. API testing with the help of  Rest Assured.
Test in Rest. API testing with the help of Rest Assured.Artem Korchevyi
 
Introduction to Ruby Native Extensions and Foreign Function Interface
Introduction to Ruby Native Extensions and Foreign Function InterfaceIntroduction to Ruby Native Extensions and Foreign Function Interface
Introduction to Ruby Native Extensions and Foreign Function InterfaceOleksii Sukhovii
 
Alfresco WebScript Connector for Apache ManifoldCF
Alfresco WebScript Connector for Apache ManifoldCFAlfresco WebScript Connector for Apache ManifoldCF
Alfresco WebScript Connector for Apache ManifoldCFPiergiorgio Lucidi
 
Lecture #6. automation testing (andrey oleynik)
Lecture #6. automation testing (andrey oleynik)Lecture #6. automation testing (andrey oleynik)
Lecture #6. automation testing (andrey oleynik)Andrey Oleynik
 
GraphQL - A query language to empower your API consumers (NDC Sydney 2017)
GraphQL - A query language to empower your API consumers (NDC Sydney 2017)GraphQL - A query language to empower your API consumers (NDC Sydney 2017)
GraphQL - A query language to empower your API consumers (NDC Sydney 2017)Rob Crowley
 
Policy-based Resource Placement Across Hybrid Cloud
Policy-based Resource Placement Across Hybrid CloudPolicy-based Resource Placement Across Hybrid Cloud
Policy-based Resource Placement Across Hybrid CloudTorin Sandall
 
The ASP.NET Web API for Beginners
The ASP.NET Web API for BeginnersThe ASP.NET Web API for Beginners
The ASP.NET Web API for BeginnersKevin Hazzard
 
Building Killer RESTful APIs with NodeJs
Building Killer RESTful APIs with NodeJsBuilding Killer RESTful APIs with NodeJs
Building Killer RESTful APIs with NodeJsSrdjan Strbanovic
 

Tendances (20)

Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1
 
Middleware in Golang: InVision's Rye
Middleware in Golang: InVision's RyeMiddleware in Golang: InVision's Rye
Middleware in Golang: InVision's Rye
 
05 integrate redis
05 integrate redis05 integrate redis
05 integrate redis
 
Rest APIs Training
Rest APIs TrainingRest APIs Training
Rest APIs Training
 
GlueCon 2015 - Publish your SQL data as web APIs
GlueCon 2015 - Publish your SQL data as web APIsGlueCon 2015 - Publish your SQL data as web APIs
GlueCon 2015 - Publish your SQL data as web APIs
 
Railsで作るBFFの功罪
Railsで作るBFFの功罪Railsで作るBFFの功罪
Railsで作るBFFの功罪
 
Introduction to GraphQL
Introduction to GraphQLIntroduction to GraphQL
Introduction to GraphQL
 
How web works and browser works ? (behind the scenes)
How web works and browser works ? (behind the scenes)How web works and browser works ? (behind the scenes)
How web works and browser works ? (behind the scenes)
 
Mongodb at-gilt-groupe-seattle-2012-09-14-final
Mongodb at-gilt-groupe-seattle-2012-09-14-finalMongodb at-gilt-groupe-seattle-2012-09-14-final
Mongodb at-gilt-groupe-seattle-2012-09-14-final
 
Excellent rest using asp.net web api
Excellent rest using asp.net web apiExcellent rest using asp.net web api
Excellent rest using asp.net web api
 
ASP.NET Web API and HTTP Fundamentals
ASP.NET Web API and HTTP FundamentalsASP.NET Web API and HTTP Fundamentals
ASP.NET Web API and HTTP Fundamentals
 
Test in Rest. API testing with the help of Rest Assured.
Test in Rest. API testing with the help of  Rest Assured.Test in Rest. API testing with the help of  Rest Assured.
Test in Rest. API testing with the help of Rest Assured.
 
SGCE 2015 REST APIs
SGCE 2015 REST APIsSGCE 2015 REST APIs
SGCE 2015 REST APIs
 
Introduction to Ruby Native Extensions and Foreign Function Interface
Introduction to Ruby Native Extensions and Foreign Function InterfaceIntroduction to Ruby Native Extensions and Foreign Function Interface
Introduction to Ruby Native Extensions and Foreign Function Interface
 
Alfresco WebScript Connector for Apache ManifoldCF
Alfresco WebScript Connector for Apache ManifoldCFAlfresco WebScript Connector for Apache ManifoldCF
Alfresco WebScript Connector for Apache ManifoldCF
 
Lecture #6. automation testing (andrey oleynik)
Lecture #6. automation testing (andrey oleynik)Lecture #6. automation testing (andrey oleynik)
Lecture #6. automation testing (andrey oleynik)
 
GraphQL - A query language to empower your API consumers (NDC Sydney 2017)
GraphQL - A query language to empower your API consumers (NDC Sydney 2017)GraphQL - A query language to empower your API consumers (NDC Sydney 2017)
GraphQL - A query language to empower your API consumers (NDC Sydney 2017)
 
Policy-based Resource Placement Across Hybrid Cloud
Policy-based Resource Placement Across Hybrid CloudPolicy-based Resource Placement Across Hybrid Cloud
Policy-based Resource Placement Across Hybrid Cloud
 
The ASP.NET Web API for Beginners
The ASP.NET Web API for BeginnersThe ASP.NET Web API for Beginners
The ASP.NET Web API for Beginners
 
Building Killer RESTful APIs with NodeJs
Building Killer RESTful APIs with NodeJsBuilding Killer RESTful APIs with NodeJs
Building Killer RESTful APIs with NodeJs
 

En vedette

Workshop - Business Process Management
Workshop - Business Process ManagementWorkshop - Business Process Management
Workshop - Business Process ManagementThiago Pereira
 
Tenha mais tempo e gerencie seus processos com a Bonita
Tenha mais tempo e gerencie seus processos com a BonitaTenha mais tempo e gerencie seus processos com a Bonita
Tenha mais tempo e gerencie seus processos com a BonitaDiego Santos
 
Service approach for development Rest API in Symfony2
Service approach for development Rest API in Symfony2Service approach for development Rest API in Symfony2
Service approach for development Rest API in Symfony2Sumy PHP User Grpoup
 
Functional Programming with Groovy
Functional Programming with GroovyFunctional Programming with Groovy
Functional Programming with GroovyArturo Herrero
 
Apresentação Queimadas
Apresentação QueimadasApresentação Queimadas
Apresentação QueimadasRádio-uca Fhm
 
How Groovy Helps
How Groovy HelpsHow Groovy Helps
How Groovy HelpsKen Kousen
 
SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...
SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...
SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...Michel Azevedo
 

En vedette (9)

Workshop - Business Process Management
Workshop - Business Process ManagementWorkshop - Business Process Management
Workshop - Business Process Management
 
Tenha mais tempo e gerencie seus processos com a Bonita
Tenha mais tempo e gerencie seus processos com a BonitaTenha mais tempo e gerencie seus processos com a Bonita
Tenha mais tempo e gerencie seus processos com a Bonita
 
Service approach for development Rest API in Symfony2
Service approach for development Rest API in Symfony2Service approach for development Rest API in Symfony2
Service approach for development Rest API in Symfony2
 
Functional Programming with Groovy
Functional Programming with GroovyFunctional Programming with Groovy
Functional Programming with Groovy
 
Apresentação Queimadas
Apresentação QueimadasApresentação Queimadas
Apresentação Queimadas
 
How Groovy Helps
How Groovy HelpsHow Groovy Helps
How Groovy Helps
 
REST & RESTful Web Services
REST & RESTful Web ServicesREST & RESTful Web Services
REST & RESTful Web Services
 
Platform as a Service (PaaS)
Platform as a Service (PaaS)Platform as a Service (PaaS)
Platform as a Service (PaaS)
 
SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...
SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...
SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...
 

Similaire à Take a Groovy REST

FlutterでGraphQLを扱う
FlutterでGraphQLを扱うFlutterでGraphQLを扱う
FlutterでGraphQLを扱うIgaHironobu
 
Euroclojure2014: Schema & Swagger - making your Clojure web APIs more awesome
Euroclojure2014: Schema & Swagger - making your Clojure web APIs more awesomeEuroclojure2014: Schema & Swagger - making your Clojure web APIs more awesome
Euroclojure2014: Schema & Swagger - making your Clojure web APIs more awesomeMetosin Oy
 
JHipster Conf 2018 : Connect your JHipster apps to the world of APIs with Ope...
JHipster Conf 2018 : Connect your JHipster apps to the world of APIs with Ope...JHipster Conf 2018 : Connect your JHipster apps to the world of APIs with Ope...
JHipster Conf 2018 : Connect your JHipster apps to the world of APIs with Ope...chbornet
 
Combining Heritrix and PhantomJS for Better Crawling of Pages with Javascript
Combining Heritrix and PhantomJS for Better Crawling of Pages with JavascriptCombining Heritrix and PhantomJS for Better Crawling of Pages with Javascript
Combining Heritrix and PhantomJS for Better Crawling of Pages with JavascriptMichael Nelson
 
Web Services and Android - OSSPAC 2009
Web Services and Android - OSSPAC 2009Web Services and Android - OSSPAC 2009
Web Services and Android - OSSPAC 2009sullis
 
Access Control for HTTP Operations on Linked Data
Access Control for HTTP Operations on Linked DataAccess Control for HTTP Operations on Linked Data
Access Control for HTTP Operations on Linked DataLuca Costabello
 
apidays LIVE Australia - Have your cake and eat it too: GraphQL? REST? Why no...
apidays LIVE Australia - Have your cake and eat it too: GraphQL? REST? Why no...apidays LIVE Australia - Have your cake and eat it too: GraphQL? REST? Why no...
apidays LIVE Australia - Have your cake and eat it too: GraphQL? REST? Why no...apidays
 
Ratpack Web Framework
Ratpack Web FrameworkRatpack Web Framework
Ratpack Web FrameworkDaniel Woods
 
Construindo aplicações com HTML5, WebSockets, e Java EE 7
Construindo aplicações com HTML5, WebSockets, e Java EE 7Construindo aplicações com HTML5, WebSockets, e Java EE 7
Construindo aplicações com HTML5, WebSockets, e Java EE 7Bruno Borges
 
The never-ending REST API design debate -- Devoxx France 2016
The never-ending REST API design debate -- Devoxx France 2016The never-ending REST API design debate -- Devoxx France 2016
The never-ending REST API design debate -- Devoxx France 2016Restlet
 
Web Frameworks of the Future
Web Frameworks of the FutureWeb Frameworks of the Future
Web Frameworks of the Futureelliando dias
 
Apache Solr Changes the Way You Build Sites
Apache Solr Changes the Way You Build SitesApache Solr Changes the Way You Build Sites
Apache Solr Changes the Way You Build SitesPeter
 
Choisir entre une API RPC, SOAP, REST, GraphQL? 
Et si le problème était ai...
Choisir entre une API  RPC, SOAP, REST, GraphQL?  
Et si le problème était ai...Choisir entre une API  RPC, SOAP, REST, GraphQL?  
Et si le problème était ai...
Choisir entre une API RPC, SOAP, REST, GraphQL? 
Et si le problème était ai...François-Guillaume Ribreau
 
Arabidopsis Information Portal, Developer Workshop 2014, Introduction
Arabidopsis Information Portal, Developer Workshop 2014, IntroductionArabidopsis Information Portal, Developer Workshop 2014, Introduction
Arabidopsis Information Portal, Developer Workshop 2014, IntroductionJasonRafeMiller
 
Azure and web sites hackaton deck
Azure and web sites hackaton deckAzure and web sites hackaton deck
Azure and web sites hackaton deckAlexey Bokov
 
Building REST APIs using gRPC and Go
Building REST APIs using gRPC and GoBuilding REST APIs using gRPC and Go
Building REST APIs using gRPC and GoAlvaro Viebrantz
 
Architecture & Workflow of Modern Web Apps
Architecture & Workflow of Modern Web AppsArchitecture & Workflow of Modern Web Apps
Architecture & Workflow of Modern Web AppsRasheed Waraich
 
Taking Control of your Data with GraphQL
Taking Control of your Data with GraphQLTaking Control of your Data with GraphQL
Taking Control of your Data with GraphQLVinci Rufus
 

Similaire à Take a Groovy REST (20)

FlutterでGraphQLを扱う
FlutterでGraphQLを扱うFlutterでGraphQLを扱う
FlutterでGraphQLを扱う
 
Euroclojure2014: Schema & Swagger - making your Clojure web APIs more awesome
Euroclojure2014: Schema & Swagger - making your Clojure web APIs more awesomeEuroclojure2014: Schema & Swagger - making your Clojure web APIs more awesome
Euroclojure2014: Schema & Swagger - making your Clojure web APIs more awesome
 
JHipster Conf 2018 : Connect your JHipster apps to the world of APIs with Ope...
JHipster Conf 2018 : Connect your JHipster apps to the world of APIs with Ope...JHipster Conf 2018 : Connect your JHipster apps to the world of APIs with Ope...
JHipster Conf 2018 : Connect your JHipster apps to the world of APIs with Ope...
 
Combining Heritrix and PhantomJS for Better Crawling of Pages with Javascript
Combining Heritrix and PhantomJS for Better Crawling of Pages with JavascriptCombining Heritrix and PhantomJS for Better Crawling of Pages with Javascript
Combining Heritrix and PhantomJS for Better Crawling of Pages with Javascript
 
Web Services and Android - OSSPAC 2009
Web Services and Android - OSSPAC 2009Web Services and Android - OSSPAC 2009
Web Services and Android - OSSPAC 2009
 
Access Control for HTTP Operations on Linked Data
Access Control for HTTP Operations on Linked DataAccess Control for HTTP Operations on Linked Data
Access Control for HTTP Operations on Linked Data
 
apidays LIVE Australia - Have your cake and eat it too: GraphQL? REST? Why no...
apidays LIVE Australia - Have your cake and eat it too: GraphQL? REST? Why no...apidays LIVE Australia - Have your cake and eat it too: GraphQL? REST? Why no...
apidays LIVE Australia - Have your cake and eat it too: GraphQL? REST? Why no...
 
Ratpack Web Framework
Ratpack Web FrameworkRatpack Web Framework
Ratpack Web Framework
 
Construindo aplicações com HTML5, WebSockets, e Java EE 7
Construindo aplicações com HTML5, WebSockets, e Java EE 7Construindo aplicações com HTML5, WebSockets, e Java EE 7
Construindo aplicações com HTML5, WebSockets, e Java EE 7
 
The never-ending REST API design debate -- Devoxx France 2016
The never-ending REST API design debate -- Devoxx France 2016The never-ending REST API design debate -- Devoxx France 2016
The never-ending REST API design debate -- Devoxx France 2016
 
Web Frameworks of the Future
Web Frameworks of the FutureWeb Frameworks of the Future
Web Frameworks of the Future
 
Apache Solr Changes the Way You Build Sites
Apache Solr Changes the Way You Build SitesApache Solr Changes the Way You Build Sites
Apache Solr Changes the Way You Build Sites
 
Choisir entre une API RPC, SOAP, REST, GraphQL? 
Et si le problème était ai...
Choisir entre une API  RPC, SOAP, REST, GraphQL?  
Et si le problème était ai...Choisir entre une API  RPC, SOAP, REST, GraphQL?  
Et si le problème était ai...
Choisir entre une API RPC, SOAP, REST, GraphQL? 
Et si le problème était ai...
 
About Clack
About ClackAbout Clack
About Clack
 
Arabidopsis Information Portal, Developer Workshop 2014, Introduction
Arabidopsis Information Portal, Developer Workshop 2014, IntroductionArabidopsis Information Portal, Developer Workshop 2014, Introduction
Arabidopsis Information Portal, Developer Workshop 2014, Introduction
 
Azure and web sites hackaton deck
Azure and web sites hackaton deckAzure and web sites hackaton deck
Azure and web sites hackaton deck
 
Building REST APIs using gRPC and Go
Building REST APIs using gRPC and GoBuilding REST APIs using gRPC and Go
Building REST APIs using gRPC and Go
 
Architecture & Workflow of Modern Web Apps
Architecture & Workflow of Modern Web AppsArchitecture & Workflow of Modern Web Apps
Architecture & Workflow of Modern Web Apps
 
Into The Box 2018 Ortus Keynote
Into The Box 2018 Ortus KeynoteInto The Box 2018 Ortus Keynote
Into The Box 2018 Ortus Keynote
 
Taking Control of your Data with GraphQL
Taking Control of your Data with GraphQLTaking Control of your Data with GraphQL
Taking Control of your Data with GraphQL
 

Plus de Restlet

APIDays - API Design Workshop
APIDays - API Design WorkshopAPIDays - API Design Workshop
APIDays - API Design WorkshopRestlet
 
APIdays 2016 - The State of Web API Languages
APIdays 2016  - The State of Web API LanguagesAPIdays 2016  - The State of Web API Languages
APIdays 2016 - The State of Web API LanguagesRestlet
 
APIStrat Open API Workshop
APIStrat Open API WorkshopAPIStrat Open API Workshop
APIStrat Open API WorkshopRestlet
 
DevOps DDay - Streamline DevOps Workflows With APIs
DevOps DDay - Streamline DevOps Workflows With APIsDevOps DDay - Streamline DevOps Workflows With APIs
DevOps DDay - Streamline DevOps Workflows With APIsRestlet
 
Restlet Framework NG
Restlet Framework NGRestlet Framework NG
Restlet Framework NGRestlet
 
API World 2016 - A five-sided prism polarizing Web API development
API World 2016 - A five-sided prism polarizing Web API developmentAPI World 2016 - A five-sided prism polarizing Web API development
API World 2016 - A five-sided prism polarizing Web API developmentRestlet
 
MuleSoft Connect 2016 - Getting started with RAML using Restlet’s visual desi...
MuleSoft Connect 2016 - Getting started with RAML using Restlet’s visual desi...MuleSoft Connect 2016 - Getting started with RAML using Restlet’s visual desi...
MuleSoft Connect 2016 - Getting started with RAML using Restlet’s visual desi...Restlet
 
Public and private APIs: differences and challenges
Public and private APIs: differences and challengesPublic and private APIs: differences and challenges
Public and private APIs: differences and challengesRestlet
 
APIdays 2015 - The State of Web API Languages
APIdays 2015 - The State of Web API LanguagesAPIdays 2015 - The State of Web API Languages
APIdays 2015 - The State of Web API LanguagesRestlet
 
The never-ending REST API design debate
The never-ending REST API design debateThe never-ending REST API design debate
The never-ending REST API design debateRestlet
 
GlueCon 2015 - How REST APIs can glue all types of devices together
GlueCon 2015 - How REST APIs can glue all types of devices togetherGlueCon 2015 - How REST APIs can glue all types of devices together
GlueCon 2015 - How REST APIs can glue all types of devices togetherRestlet
 
Transformez vos Google Spreadsheets en API web - DevFest 2014
Transformez vos Google Spreadsheets en API web - DevFest 2014Transformez vos Google Spreadsheets en API web - DevFest 2014
Transformez vos Google Spreadsheets en API web - DevFest 2014Restlet
 
APIdays Paris 2014 - Workshop - Craft and Deploy Your API in a Few Clicks Wit...
APIdays Paris 2014 - Workshop - Craft and Deploy Your API in a Few Clicks Wit...APIdays Paris 2014 - Workshop - Craft and Deploy Your API in a Few Clicks Wit...
APIdays Paris 2014 - Workshop - Craft and Deploy Your API in a Few Clicks Wit...Restlet
 
APIdays Paris 2014 - The State of Web API Languages
APIdays Paris 2014 - The State of Web API LanguagesAPIdays Paris 2014 - The State of Web API Languages
APIdays Paris 2014 - The State of Web API LanguagesRestlet
 
Defrag 2014 - Blend Web IDEs, Open Source and PaaS to Create and Deploy APIs
Defrag 2014 - Blend Web IDEs, Open Source and PaaS to Create and Deploy APIsDefrag 2014 - Blend Web IDEs, Open Source and PaaS to Create and Deploy APIs
Defrag 2014 - Blend Web IDEs, Open Source and PaaS to Create and Deploy APIsRestlet
 
QCon SF 2014 - Create and Deploy APIs using Web IDEs, Open Source Frameworks ...
QCon SF 2014 - Create and Deploy APIs using Web IDEs, Open Source Frameworks ...QCon SF 2014 - Create and Deploy APIs using Web IDEs, Open Source Frameworks ...
QCon SF 2014 - Create and Deploy APIs using Web IDEs, Open Source Frameworks ...Restlet
 
APIdays Paris - How to Build Your Web API
APIdays Paris - How to Build Your Web APIAPIdays Paris - How to Build Your Web API
APIdays Paris - How to Build Your Web APIRestlet
 
Web APIs, the New Language Frontier
Web APIs, the New Language FrontierWeb APIs, the New Language Frontier
Web APIs, the New Language FrontierRestlet
 
Investir sur son API web (in French)
Investir sur son API web (in French)Investir sur son API web (in French)
Investir sur son API web (in French)Restlet
 
Deploy a web API in 15'
Deploy a web API in 15'Deploy a web API in 15'
Deploy a web API in 15'Restlet
 

Plus de Restlet (20)

APIDays - API Design Workshop
APIDays - API Design WorkshopAPIDays - API Design Workshop
APIDays - API Design Workshop
 
APIdays 2016 - The State of Web API Languages
APIdays 2016  - The State of Web API LanguagesAPIdays 2016  - The State of Web API Languages
APIdays 2016 - The State of Web API Languages
 
APIStrat Open API Workshop
APIStrat Open API WorkshopAPIStrat Open API Workshop
APIStrat Open API Workshop
 
DevOps DDay - Streamline DevOps Workflows With APIs
DevOps DDay - Streamline DevOps Workflows With APIsDevOps DDay - Streamline DevOps Workflows With APIs
DevOps DDay - Streamline DevOps Workflows With APIs
 
Restlet Framework NG
Restlet Framework NGRestlet Framework NG
Restlet Framework NG
 
API World 2016 - A five-sided prism polarizing Web API development
API World 2016 - A five-sided prism polarizing Web API developmentAPI World 2016 - A five-sided prism polarizing Web API development
API World 2016 - A five-sided prism polarizing Web API development
 
MuleSoft Connect 2016 - Getting started with RAML using Restlet’s visual desi...
MuleSoft Connect 2016 - Getting started with RAML using Restlet’s visual desi...MuleSoft Connect 2016 - Getting started with RAML using Restlet’s visual desi...
MuleSoft Connect 2016 - Getting started with RAML using Restlet’s visual desi...
 
Public and private APIs: differences and challenges
Public and private APIs: differences and challengesPublic and private APIs: differences and challenges
Public and private APIs: differences and challenges
 
APIdays 2015 - The State of Web API Languages
APIdays 2015 - The State of Web API LanguagesAPIdays 2015 - The State of Web API Languages
APIdays 2015 - The State of Web API Languages
 
The never-ending REST API design debate
The never-ending REST API design debateThe never-ending REST API design debate
The never-ending REST API design debate
 
GlueCon 2015 - How REST APIs can glue all types of devices together
GlueCon 2015 - How REST APIs can glue all types of devices togetherGlueCon 2015 - How REST APIs can glue all types of devices together
GlueCon 2015 - How REST APIs can glue all types of devices together
 
Transformez vos Google Spreadsheets en API web - DevFest 2014
Transformez vos Google Spreadsheets en API web - DevFest 2014Transformez vos Google Spreadsheets en API web - DevFest 2014
Transformez vos Google Spreadsheets en API web - DevFest 2014
 
APIdays Paris 2014 - Workshop - Craft and Deploy Your API in a Few Clicks Wit...
APIdays Paris 2014 - Workshop - Craft and Deploy Your API in a Few Clicks Wit...APIdays Paris 2014 - Workshop - Craft and Deploy Your API in a Few Clicks Wit...
APIdays Paris 2014 - Workshop - Craft and Deploy Your API in a Few Clicks Wit...
 
APIdays Paris 2014 - The State of Web API Languages
APIdays Paris 2014 - The State of Web API LanguagesAPIdays Paris 2014 - The State of Web API Languages
APIdays Paris 2014 - The State of Web API Languages
 
Defrag 2014 - Blend Web IDEs, Open Source and PaaS to Create and Deploy APIs
Defrag 2014 - Blend Web IDEs, Open Source and PaaS to Create and Deploy APIsDefrag 2014 - Blend Web IDEs, Open Source and PaaS to Create and Deploy APIs
Defrag 2014 - Blend Web IDEs, Open Source and PaaS to Create and Deploy APIs
 
QCon SF 2014 - Create and Deploy APIs using Web IDEs, Open Source Frameworks ...
QCon SF 2014 - Create and Deploy APIs using Web IDEs, Open Source Frameworks ...QCon SF 2014 - Create and Deploy APIs using Web IDEs, Open Source Frameworks ...
QCon SF 2014 - Create and Deploy APIs using Web IDEs, Open Source Frameworks ...
 
APIdays Paris - How to Build Your Web API
APIdays Paris - How to Build Your Web APIAPIdays Paris - How to Build Your Web API
APIdays Paris - How to Build Your Web API
 
Web APIs, the New Language Frontier
Web APIs, the New Language FrontierWeb APIs, the New Language Frontier
Web APIs, the New Language Frontier
 
Investir sur son API web (in French)
Investir sur son API web (in French)Investir sur son API web (in French)
Investir sur son API web (in French)
 
Deploy a web API in 15'
Deploy a web API in 15'Deploy a web API in 15'
Deploy a web API in 15'
 

Dernier

Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.YounusS2
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsSeth Reyes
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopBachir Benyammi
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 
Do we need a new standard for visualizing the invisible?
Do we need a new standard for visualizing the invisible?Do we need a new standard for visualizing the invisible?
Do we need a new standard for visualizing the invisible?SANGHEE SHIN
 
Digital magic. A small project for controlling smart light bulbs.
Digital magic. A small project for controlling smart light bulbs.Digital magic. A small project for controlling smart light bulbs.
Digital magic. A small project for controlling smart light bulbs.francesco barbera
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding TeamAdam Moalla
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6DianaGray10
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfDaniel Santiago Silva Capera
 
20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf
20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf
20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdfJamie (Taka) Wang
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesDavid Newbury
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...Aggregage
 
Cloud Revolution: Exploring the New Wave of Serverless Spatial Data
Cloud Revolution: Exploring the New Wave of Serverless Spatial DataCloud Revolution: Exploring the New Wave of Serverless Spatial Data
Cloud Revolution: Exploring the New Wave of Serverless Spatial DataSafe Software
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Adtran
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesMd Hossain Ali
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Commit University
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UbiTrack UK
 
RAG Patterns and Vector Search in Generative AI
RAG Patterns and Vector Search in Generative AIRAG Patterns and Vector Search in Generative AI
RAG Patterns and Vector Search in Generative AIUdaiappa Ramachandran
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...DianaGray10
 
Introduction to Quantum Computing
Introduction to Quantum ComputingIntroduction to Quantum Computing
Introduction to Quantum ComputingGDSC PJATK
 

Dernier (20)

Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and Hazards
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 Workshop
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 
Do we need a new standard for visualizing the invisible?
Do we need a new standard for visualizing the invisible?Do we need a new standard for visualizing the invisible?
Do we need a new standard for visualizing the invisible?
 
Digital magic. A small project for controlling smart light bulbs.
Digital magic. A small project for controlling smart light bulbs.Digital magic. A small project for controlling smart light bulbs.
Digital magic. A small project for controlling smart light bulbs.
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
 
20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf
20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf
20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond Ontologies
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
 
Cloud Revolution: Exploring the New Wave of Serverless Spatial Data
Cloud Revolution: Exploring the New Wave of Serverless Spatial DataCloud Revolution: Exploring the New Wave of Serverless Spatial Data
Cloud Revolution: Exploring the New Wave of Serverless Spatial Data
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
 
RAG Patterns and Vector Search in Generative AI
RAG Patterns and Vector Search in Generative AIRAG Patterns and Vector Search in Generative AI
RAG Patterns and Vector Search in Generative AI
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
 
Introduction to Quantum Computing
Introduction to Quantum ComputingIntroduction to Quantum Computing
Introduction to Quantum Computing
 

Take a Groovy REST