API first approach for frontend developers

11
API first approach for frontend developers Roman Bugaev, API advocate @Adform BY

description

Роман Бугаев @rbugaev «API first approach for frontend developers» Frontend Dev Conf'14 www.fdconf.by

Transcript of API first approach for frontend developers

Page 1: API first approach for frontend developers

API first approach for frontend developers

Roman Bugaev, API advocate @Adform BY

Page 2: API first approach for frontend developers

API - part of architecture

• Internal APIs are APIs, Too - The same rules

• Empower front-end

• Front-end developer designs API (UI for data)

Page 3: API first approach for frontend developers

Design/Pragmatic REST

• REST is an architectural style and not a strict standard

• #1 design principle: to maximize developer productivity

• Pragmatic REST is a design problem

• Keep simple things simple

Page 4: API first approach for frontend developers

API. Start from Spec/Mock

Page 5: API first approach for frontend developers

API. Start from Spec/Mock

Page 6: API first approach for frontend developers

API. Start from Spec/Mock

Page 7: API first approach for frontend developers

Collaborate

https://github.com/apiaryio/apiblueprint-sdk

Page 8: API first approach for frontend developers

Agility/HAL

• Amazon

"_links": {

"self": { "href": "/file/987" },

“root": { "href": "/folder/145", "title": “Root" }

}

https://github.com/mikekelly/backbone.halhttp://weluse.github.io/hyperagent/

Page 9: API first approach for frontend developers

Agility/compatible > beautiful

API Design @ GitHub (100 releases per day, in Adform only 25): http://tech.yandex.ru/events/yac/2013/talks/1100/

Page 10: API first approach for frontend developers

Performance/Conditional requests

• ETag - Most responses return an ETag header

• Last-Modified/ If-Modified-Since/ If-None-Matchheader

parse: function(response, xhr) {

if (xhr.status === 304)

return this.models

return response.data;

}

Page 11: API first approach for frontend developers

Thank you! Questions?

[email protected]

bugaev_roman

http://linkedin.com/in/rbugaev