Open API Architectural Choices Considerations

Post on 18-May-2015

3.885 views 6 download

Tags:

description

Building API's for a web 2.0 / web 3.0 aspiring service is very different than providing a tight integrated RPC service for some corporate client. It requires completely different ways of thinking and embracing new standards. I've composed a quick slideshow of all the architectural choices and considerations I've come across.

Transcript of Open API Architectural Choices Considerations

Open Data ServicesArchitectural Choices and Considerations

Dominiek ter HeideMay, 2008

Common Usages

Developer Center

Platform Setup

Call Routing

Data Structure

Format

Data Service Goals

stimulate an explosion of new data/content

repurpose our data off-site and increase activity

potentially generate revenue from services

Separate?

Tied in with Service Separated Platform

Common Usages

The fruits of Data Services

Common Usages

Web embedable widgets

PC applications

Graphing applications

Web WidgetsFlash HTML

PC Applications

Desktop Dashboard

Graphing AppsRelationships

Graphing AppsTrends

Developer Center

A place for geeks to gather.

A place to

provide tutorials and examples

allow people to document (wiki)

provide usage and key administration

provide licensing information

Last.fm Resources/Support

audioscrobbler.net

Flickr Resources/Support

flickr.com/services

Twitter Resources/Support

twitter.com/help/api

Tumblr Resources/Support

tumblr.com/api

Platform Setup

How to structure your universe.

Platform Setup

URL of great importance

Profit / Non-profit considerations

Platform As A Service?

the URI

http://ws.audioscrobbler.com/1.0/user/dx00/recenttracks.xml

syntaxmedia to use mental models /data structure

protocol domain version path format

Licensing

For service

For data

Choose a data license early

Licencesservice data

flickr non-commercial user specified

last.fm non-commercial non-commercial CC

twitter none none

tumblr none none

Call Routing

How to locate our stuff.

Loose / Tight Integration

How much do third parties need to know about your system?

How easy is it to use your data services?

Integration

xmlrdf

xml

standardized customized

restrpc

restful

ease of integration

json

rss

html

html microformats

Loose

Tight

corba

xmlrpc

soap serialization

RESTfulGET /get_user.xml?username=dominiek

HTTP standard?Status codes?

Using correct method calls?

YesYes

AlmostNoIdentifying URI for resource

Variety of response formats? Yes

RESTDELETE /users/dominiek.xml

HTTP standard?Status codes?

Using correct method calls?

YesYes

Identifying URI for resource

Variety of response formats? YesYesYes

API Keys

provide usage tracking

take away ad hoc integration

ideally in request headers

Authentication

different from the User Interface

OAuth for user data?

Data Structure

What are we even talking about?

Structuring Goals

Talk about the same Domain

Understandability for other Developers

Understandability for other Architectures

Standardize Structure

Your Standards

+

Open Standards

last.fm’s XML XSPF

or...

Standardize Structure

Your Standards extend Open Standards

Youtube’s API feed

yes!

Content vs Communication

URI’s in Content Data

No knowledge about URL structure required

Ability support external Entities

RDF and Semantic Web Ready

Format

In what language do we speak?

Formatting Goals

facilitate implementation variety

performance

Desired Formats

XML for tight server-side integration

JSON for easy web integration (widgets)

Optional Formats

HTML Human readable debug output

Serializations like PHP and YAML

RDF for advanced integration