SlideShare a Scribd company logo
Unlock dependency between
client teams and API team
with API mock and proxy
Bruce Li
@ascendbruce
Rails Pacific 2016 ⚡
API Implementation Code Review DeployQA
API Implementation Code Review DeployQA
Web Client Implementation
Android APP Implementation
iOS App Implementation
API
design
change
Unlock dependency between client teams and API team with API mock and proxy
### List All Questions [GET]
+ Response 200 (application/json)
[
{
"question": "Favourite programming language?",
"published_at": "2014-11-11T08:40:51.620Z",
"url": "/questions/1",
"choices": [
{
"choice": "Swift",
"url": "/questions/1/choices/1",
"votes": 2048
}, {
"choice": "Python",
"url": "/questions/1/choices/2",
"votes": 1024
}, {
"choice": "Objective-C",
"url": "/questions/1/choices/3",
"votes": 512
}, {
"choice": "Ruby",
"url": "/questions/1/choices/4",
"votes": 256
}
]
}
]
]
### Create a New Question [POST]
You may create your own question using this action. It takes a JSON object
containing a question and a collection of answers in the form of choices.
+ question (string) - The question
+ choices (array[string]) - A collection of choices.
+ Request (application/json)
{
"question": "Favourite programming language?",
"choices": [
"Swift",
"Python",
"Objective-C",
"Ruby"
]
}
+ Response 201 (application/json)
+ Headers
Location: /questions/1
+ Body
{
"question": "Favourite programming language?",
+ Response 201 (application/json)
+ Headers
Location: /questions/1
+ Body
{
"question": "Favourite programming language?",
"published_at": "2014-11-11T08:40:51.620Z",
"url": "/questions/1",
"choices": [
{
"choice": "Swift",
"url": "/questions/1/choices/1",
"votes": 0
}, {
"choice": "Python",
"url": "/questions/1/choices/2",
"votes": 0
}, {
"choice": "Objective-C",
"url": "/questions/1/choices/3",
"votes": 0
}, {
"choice": "Ruby",
"url": "/questions/1/choices/4",
"votes": 0
}
]
}
{
"choice": "Swift",
"url": "/questions/1/choices/1",
"votes": 0
}, {
"choice": "Python",
"url": "/questions/1/choices/2",
"votes": 0
}, {
"choice": "Objective-C",
"url": "/questions/1/choices/3",
"votes": 0
}, {
"choice": "Ruby",
"url": "/questions/1/choices/4",
"votes": 0
}
]
}
AND 9,000+ LINES
Unlock dependency between client teams and API team with API mock and proxy
specific behavior to be tested?
DEMO
iOS
Client
API Mock
Web
Client
Android
Client
Sandbox
iOS
Client
API
endpoint
Web
Client
Android
Client
Your backend
iOS
Client
API Mock
API
endpoint
Web
Client
Android
Client
DEMO
Sandbox
Your backend
Awesome-ize rails console
in 3 steps
1. gem 'awesome_rails_console'
2. bundle install
3. rails g awesome_rails_console:install
DEMO
@ascendbruce
toyroom.bruceli.net
Thank you
We’re hiring
Tweet me your feedback
Blog post version of this
talk is coming soon

More Related Content

PDF
The liferay case: lessons learned evolving from RPC to Hypermedia REST APIs
PPTX
A Tasty deep-dive into Open API Specification Links
PPTX
Introduction to REST and Hypermedia
PPTX
Another API-Blueprint, RAML and Swagger Comparison
PDF
Build a REST API for your Mobile Apps using Node.js
PDF
API Docs Made Right / RAML - Swagger rant
PPTX
Introducing Swagger
PPTX
Postman. From simple API test to end to end scenario
The liferay case: lessons learned evolving from RPC to Hypermedia REST APIs
A Tasty deep-dive into Open API Specification Links
Introduction to REST and Hypermedia
Another API-Blueprint, RAML and Swagger Comparison
Build a REST API for your Mobile Apps using Node.js
API Docs Made Right / RAML - Swagger rant
Introducing Swagger
Postman. From simple API test to end to end scenario

What's hot (20)

PDF
API Description Languages
PPTX
REST Coder: Auto Generating Client Stubs and Documentation for REST APIs
PPTX
RESTful API Design Best Practices Using ASP.NET Web API
PPSX
API Test Automation
PPTX
Api testing
PPTX
Api Design
PDF
API Creation to Iteration without the Frustration
PPTX
Maintainable API Docs and Other Rainbow Colored Unicorns
PDF
API Description Languages: Which Is The Right One For Me?
PPTX
Taking Control of your Data with GraphQL
PDF
Netflix OSS and HATEOAS deployed on production - JavaLand
PPTX
API Testing with Open Source Code and Cucumber
PPTX
What is Swagger?
PDF
Streamlining API with Swagger.io
PPTX
API Virtualization: Mocking on Steroids
PDF
WordPress for iOS - Under the Hood
PPTX
Build 2017 - B8041 - Microsoft Edge: What’s new and what’s next for the web a...
PDF
The API-Application Semantic Gap
PPTX
API design principles for accelerated development
PDF
apidays LIVE Paris - Exploring an API with Blocks by Larry Kluger
API Description Languages
REST Coder: Auto Generating Client Stubs and Documentation for REST APIs
RESTful API Design Best Practices Using ASP.NET Web API
API Test Automation
Api testing
Api Design
API Creation to Iteration without the Frustration
Maintainable API Docs and Other Rainbow Colored Unicorns
API Description Languages: Which Is The Right One For Me?
Taking Control of your Data with GraphQL
Netflix OSS and HATEOAS deployed on production - JavaLand
API Testing with Open Source Code and Cucumber
What is Swagger?
Streamlining API with Swagger.io
API Virtualization: Mocking on Steroids
WordPress for iOS - Under the Hood
Build 2017 - B8041 - Microsoft Edge: What’s new and what’s next for the web a...
The API-Application Semantic Gap
API design principles for accelerated development
apidays LIVE Paris - Exploring an API with Blocks by Larry Kluger
Ad

Viewers also liked (15)

PDF
Up carpark
PPTX
Mosh pit music presentation
PDF
ใบงานที่ 7
PDF
Drag racing
DOCX
Mujeres maltratadas hecho por henar palacios 1º c
PPT
Grigliata
PPTX
Presentation hallie
DOC
vishal DTS &OPTIMIZATION
PPTX
Multipanel
PPTX
Video ingles
PDF
Cisco Letter
PPT
Intermedia Torino Italy Presentation
PPTX
Motor 4 temps otto
PPT
ПРОПОЛИС: СОСТАВ, СВОЙСТВА, ДЕЙСТВИЕ
PDF
Como se hace un trabajo academico
Up carpark
Mosh pit music presentation
ใบงานที่ 7
Drag racing
Mujeres maltratadas hecho por henar palacios 1º c
Grigliata
Presentation hallie
vishal DTS &OPTIMIZATION
Multipanel
Video ingles
Cisco Letter
Intermedia Torino Italy Presentation
Motor 4 temps otto
ПРОПОЛИС: СОСТАВ, СВОЙСТВА, ДЕЙСТВИЕ
Como se hace un trabajo academico
Ad

Similar to Unlock dependency between client teams and API team with API mock and proxy (14)

PDF
Stop coding start testing
PPTX
How to build Simple yet powerful API.pptx
PDF
Test driven development with behat and silex
PDF
BinProxy: New Paradigm of Binary Analysis With Your Favorite Web Proxy
PDF
Exploring an API with Blocks
PDF
apidays LIVE LONDON - Exploring an API with Blocks by Larry Kluger
PDF
Enter the app era with ruby on rails
PDF
Try using Aeromock by Marverick, Inc.
PDF
Web Clients for Ruby and What they should be in the future
PDF
Python tools for testing web services over HTTP
PDF
Roundtable_-_API_Research__Testing_Tools.pdf
PDF
Ruby HTTP clients comparison
PDF
Fault tolerant microservices - LJC Skills Matter 4thNov2014
Stop coding start testing
How to build Simple yet powerful API.pptx
Test driven development with behat and silex
BinProxy: New Paradigm of Binary Analysis With Your Favorite Web Proxy
Exploring an API with Blocks
apidays LIVE LONDON - Exploring an API with Blocks by Larry Kluger
Enter the app era with ruby on rails
Try using Aeromock by Marverick, Inc.
Web Clients for Ruby and What they should be in the future
Python tools for testing web services over HTTP
Roundtable_-_API_Research__Testing_Tools.pdf
Ruby HTTP clients comparison
Fault tolerant microservices - LJC Skills Matter 4thNov2014

More from Bruce Li (15)

PDF
RSpec best practice - avoid using before and let
PDF
Make your Rails console AWESOME (Ruby SG meetup 2016-03-29)
PDF
Refactoring Workshop (Rails Pacific 2014)
PDF
011 優化時間分配的 app 跟心得
PDF
Rails Code Club 3 @ Taipei
PDF
Rails Code Club 2 @ Taipei
PDF
010 Better and Better 工程師就業兩年多的心得雜談
PDF
009 增進效率的雜七雜八mac快速鍵與設定 part 2
PDF
008 vim超基礎入門
PDF
007 Facebook Open Graph 相關開發簡單介紹 公開版
PDF
006 實作小玩具功能:chrome desktop notification
PDF
004 動機 單純的力量 讀書心得
PDF
003 Ruby小觀念與小技巧Part2
PDF
002 增進效率的有的沒的快速鍵與設定
PDF
001 Ruby小觀念與小技巧
RSpec best practice - avoid using before and let
Make your Rails console AWESOME (Ruby SG meetup 2016-03-29)
Refactoring Workshop (Rails Pacific 2014)
011 優化時間分配的 app 跟心得
Rails Code Club 3 @ Taipei
Rails Code Club 2 @ Taipei
010 Better and Better 工程師就業兩年多的心得雜談
009 增進效率的雜七雜八mac快速鍵與設定 part 2
008 vim超基礎入門
007 Facebook Open Graph 相關開發簡單介紹 公開版
006 實作小玩具功能:chrome desktop notification
004 動機 單純的力量 讀書心得
003 Ruby小觀念與小技巧Part2
002 增進效率的有的沒的快速鍵與設定
001 Ruby小觀念與小技巧

Recently uploaded (20)

PDF
Well-logging-methods_new................
PPTX
additive manufacturing of ss316l using mig welding
PPTX
Artificial Intelligence
PDF
R24 SURVEYING LAB MANUAL for civil enggi
PPTX
Geodesy 1.pptx...............................................
PPT
Project quality management in manufacturing
PPT
Introduction, IoT Design Methodology, Case Study on IoT System for Weather Mo...
PPTX
bas. eng. economics group 4 presentation 1.pptx
PPTX
Construction Project Organization Group 2.pptx
PPTX
Sustainable Sites - Green Building Construction
PDF
Mitigating Risks through Effective Management for Enhancing Organizational Pe...
PDF
Digital Logic Computer Design lecture notes
PDF
BMEC211 - INTRODUCTION TO MECHATRONICS-1.pdf
PDF
Model Code of Practice - Construction Work - 21102022 .pdf
PDF
SM_6th-Sem__Cse_Internet-of-Things.pdf IOT
PDF
Automation-in-Manufacturing-Chapter-Introduction.pdf
PPTX
Foundation to blockchain - A guide to Blockchain Tech
PPTX
CARTOGRAPHY AND GEOINFORMATION VISUALIZATION chapter1 NPTE (2).pptx
PPTX
OOP with Java - Java Introduction (Basics)
PPTX
Engineering Ethics, Safety and Environment [Autosaved] (1).pptx
Well-logging-methods_new................
additive manufacturing of ss316l using mig welding
Artificial Intelligence
R24 SURVEYING LAB MANUAL for civil enggi
Geodesy 1.pptx...............................................
Project quality management in manufacturing
Introduction, IoT Design Methodology, Case Study on IoT System for Weather Mo...
bas. eng. economics group 4 presentation 1.pptx
Construction Project Organization Group 2.pptx
Sustainable Sites - Green Building Construction
Mitigating Risks through Effective Management for Enhancing Organizational Pe...
Digital Logic Computer Design lecture notes
BMEC211 - INTRODUCTION TO MECHATRONICS-1.pdf
Model Code of Practice - Construction Work - 21102022 .pdf
SM_6th-Sem__Cse_Internet-of-Things.pdf IOT
Automation-in-Manufacturing-Chapter-Introduction.pdf
Foundation to blockchain - A guide to Blockchain Tech
CARTOGRAPHY AND GEOINFORMATION VISUALIZATION chapter1 NPTE (2).pptx
OOP with Java - Java Introduction (Basics)
Engineering Ethics, Safety and Environment [Autosaved] (1).pptx

Unlock dependency between client teams and API team with API mock and proxy

  • 1. Unlock dependency between client teams and API team with API mock and proxy Bruce Li @ascendbruce Rails Pacific 2016 ⚡
  • 2. API Implementation Code Review DeployQA API Implementation Code Review DeployQA Web Client Implementation Android APP Implementation iOS App Implementation API design change
  • 4. ### List All Questions [GET] + Response 200 (application/json) [ { "question": "Favourite programming language?", "published_at": "2014-11-11T08:40:51.620Z", "url": "/questions/1", "choices": [ { "choice": "Swift", "url": "/questions/1/choices/1", "votes": 2048 }, { "choice": "Python", "url": "/questions/1/choices/2", "votes": 1024 }, { "choice": "Objective-C", "url": "/questions/1/choices/3", "votes": 512 }, { "choice": "Ruby", "url": "/questions/1/choices/4", "votes": 256 } ] } ]
  • 5. ] ### Create a New Question [POST] You may create your own question using this action. It takes a JSON object containing a question and a collection of answers in the form of choices. + question (string) - The question + choices (array[string]) - A collection of choices. + Request (application/json) { "question": "Favourite programming language?", "choices": [ "Swift", "Python", "Objective-C", "Ruby" ] } + Response 201 (application/json) + Headers Location: /questions/1 + Body { "question": "Favourite programming language?",
  • 6. + Response 201 (application/json) + Headers Location: /questions/1 + Body { "question": "Favourite programming language?", "published_at": "2014-11-11T08:40:51.620Z", "url": "/questions/1", "choices": [ { "choice": "Swift", "url": "/questions/1/choices/1", "votes": 0 }, { "choice": "Python", "url": "/questions/1/choices/2", "votes": 0 }, { "choice": "Objective-C", "url": "/questions/1/choices/3", "votes": 0 }, { "choice": "Ruby", "url": "/questions/1/choices/4", "votes": 0 } ] }
  • 7. { "choice": "Swift", "url": "/questions/1/choices/1", "votes": 0 }, { "choice": "Python", "url": "/questions/1/choices/2", "votes": 0 }, { "choice": "Objective-C", "url": "/questions/1/choices/3", "votes": 0 }, { "choice": "Ruby", "url": "/questions/1/choices/4", "votes": 0 } ] } AND 9,000+ LINES
  • 10. DEMO
  • 14. Awesome-ize rails console in 3 steps 1. gem 'awesome_rails_console' 2. bundle install 3. rails g awesome_rails_console:install DEMO
  • 15. @ascendbruce toyroom.bruceli.net Thank you We’re hiring Tweet me your feedback Blog post version of this talk is coming soon