Top Banner
Design-Driven API Development Sokichi Fujita
20

Design Driven API Development

Feb 15, 2017

Download

Technology

Sokichi Fujita
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Design Driven API Development

Design-Driven API DevelopmentSokichi Fujita

Page 2: Design Driven API Development

Generation of API Description Languages

Page 3: Design Driven API Development

Swagger

Page 4: Design Driven API Development

RAML

Page 5: Design Driven API Development

API-Blueprint

Page 6: Design Driven API Development

API Description Languages

• XML • WADL, RADL, WSDL2

• JSON

• Swagger, I/O Docs

• YAML

• Swagger, RAML

• Markdown

• API-Blueprint

Popular in GitHub, NPM, …

Page 7: Design Driven API Development

Why

Page 8: Design Driven API Development

Server Code

API Document SDKs

Specification Document

Samples

Mock Server

API Console

Test code

Manually developed resources

as a reference

Page 9: Design Driven API Development

Server Code

API Document SDKs

Samples

Mock Server

API Console

Test code

Manually developed resources

It is incorrect or

doesn’t exist

Sometimes,

Page 10: Design Driven API Development

To avoid publishing un-updatable APIs

• Publishing or updating API are not so hard,

• if you can ignore lots of related resources.

• e.g. SDKs, Documents, Tests, Clients, …

Page 11: Design Driven API Development

Design-Driven Development

Page 12: Design Driven API Development

Server Code

API Document SDKs

API Schema

generate/validate

SamplesAPI ConsoleMock Server

Non-manually developed resources

codegenswagger-UIswagger-node

swagger-spec

swagger-editor

swagger-js

Page 13: Design Driven API Development

Demo

Page 14: Design Driven API Development

Demo

• Hacker News API

• Swagger-Node

• Hacker News Client

• React, Swagger-js, Electron

Page 15: Design Driven API Development

Swagger-nodeElectron

*.yaml

Swagger Editor

Express

express-swagger

controller

React

Swagger-js

- component DidMount etc.

state

render

(Dynamically JS SDK)

Cheerio

https://news.ycombinator.com

Page 16: Design Driven API Development

Server : Swagger-Node

swagger project create [project name]

swagger project edit

1. Generate a template for express | hapi | restify | sails

2. Write API specs

vim api/controller/[controller file name].js

3. Just write controllers that meet the API specs

Page 17: Design Driven API Development
Page 18: Design Driven API Development

filename of the controllers

name of the controller

Page 19: Design Driven API Development

Client : Swagger-js

var swagger = new SwaggerClient({ url: "http://localhost:8080/swagger.yaml", success: function() { swagger.apis.hackernews.fetch( {page:api}, {responseContentType: 'application/json'}, function(res) { :

}); }});

Dynamically Swagger SDK for JavaScript

Page 20: Design Driven API Development

Client : Swagger-js with React

var self = this;var swagger = new SwaggerClient({ url: "http://localhost:8080/swagger.yaml", success: function() { swagger.apis.hackernews.fetch( {page:api}, {responseContentType: 'application/json'}, function(res) { self.setState({data:res.obj}); }); }});

at componentDidMount