Slide 1

Slide 1 text

Pragmatische Web APIs mit Node.js API Summit 2016 Manuel Rauber @manuelrauber | manuel.rauber@thinktecture.com Software Architect

Slide 2

Slide 2 text

Pragmatische Web APIs mit Node.js API Summit 2016 Manuel Rauber Software Architect @ Thinktecture AG ! manuel.rauber@thinktecture.com " @manuelrauber # https://manuel-rauber.com Microsoft MVP That’s me! The guy who’s talkin’

Slide 3

Slide 3 text

Pragmatische Web APIs mit Node.js API Summit 2016 Web APIs Node.js Restify Token Authentication Database Examples Talking Points

Slide 4

Slide 4 text

Pragmatische Web APIs mit Node.js API Summit 2016 Overview Web APIs

Slide 5

Slide 5 text

Pragmatische Web APIs mit Node.js API Summit 2016 Overview • REST APIs, HTTP APIs, “whatever APIs” • Use case oriented: model functional services with dedicated interfaces • Can use several other services for data aggregation • Secured by tokens • Consumable by every HTTP(S) speaking client Web APIs

Slide 6

Slide 6 text

Pragmatische Web APIs mit Node.js API Summit 2016 Node.js is not jQuery in cool ;-) Node.js

Slide 7

Slide 7 text

Pragmatische Web APIs mit Node.js API Summit 2016 Intro • Server-side JavaScript powered by Chrome’s V8 JavaScript engine • Asynchronous, event-driven I/O API • Package management via Node Package Manager (npm) or Yarn • Cross platform: Linux, macOS, Windows • Upcoming: Alternative runtime powered by Microsoft’s ChakraCore Node.js

Slide 8

Slide 8 text

Pragmatische Web APIs mit Node.js API Summit 2016 Features • ECMAScript 6 • Experimental ECMAScript 7 • http://node.green/ • Classes • Typed arrays • Fat Arrow/Lambda Expression • Templated Strings Node.js

Slide 9

Slide 9 text

Pragmatische Web APIs mit Node.js API Summit 2016 Node.js ASP.NET Core JavaScript, TypeScript, CoffeeScript, … C# Node Package Manager, Yarn NuGet Dynamic types Static types Single threaded event loop (but async I/O threads) Multi threaded Node.js & ASP.NET Core

Slide 10

Slide 10 text

Pragmatische Web APIs mit Node.js API Summit 2016 Server Architecture Node.js

Slide 11

Slide 11 text

Pragmatische Web APIs mit Node.js API Summit 2016 Pros • Full stack JS’ish development • Universal JavaScript: Share code for client & server • Open Source loving community • Enterprise proven: Netflix, Paypal, Groupon, Walmart, … Node.js https://nodejs.org/static/documents/casestudies/Node_CaseStudy_Nasa_FNL.pdf

Slide 12

Slide 12 text

Pragmatische Web APIs mit Node.js API Summit 2016 Watch out! • Single threaded Event Loop: Avoid heavy CPU usage • Utilizes one CPU only: Scale via clustering • Relational databases can be strange • Code is (often the only) documentation Node.js

Slide 13

Slide 13 text

Pragmatische Web APIs mit Node.js API Summit 2016 Overview • Node.js module to build Web APIs • Middleware support • Client & Server components • Routing Restify Middleware 1 // Server logic next() // more logic Middleware 2 // Server logic next() // more logic Middleware 3 // Server logic // more logic Request Response Client Logging Authentication …

Slide 14

Slide 14 text

Pragmatische Web APIs mit Node.js API Summit 2016 Overview • Securing resources (APIs): Authentication & Authorization • OAuth 2 Protocol: Simple & standard method for web, mobile and desktop applications • OpenID Connect: Identity Layer on top of OAuth 2 Token Authentication

Slide 15

Slide 15 text

Pragmatische Web APIs mit Node.js API Summit 2016 Node.js • Several node packages oauth2-server, oauth2orize, OpenIdConnect, node-oauth2-provider • Currently no state-of-the-art package: Leverage third-party applications like IdentityServer • Implementation depends on the used package Token Authentication

Slide 16

Slide 16 text

Pragmatische Web APIs mit Node.js API Summit 2016 Overview • Adapters for a lot of databases • NoSQL databases MongoDB, CouchDB, … • Relational databases MSSQL, PostgreSQL, MySQL, SQLite, ... • SequelizeJS as an ORM Multiple databases, transactions, migrations, replication, query API Databases

Slide 17

Slide 17 text

Pragmatische Web APIs mit Node.js API Summit 2016 DEMO

Slide 18

Slide 18 text

Pragmatische Web APIs mit Node.js API Summit 2016 • Node.js overview Feature support, Node.js server, pros, watch outs • Web APIs with restify Routing, middlewares • Token Authentication via OAuth 2 • Relational databases via SequelizeJS Models, query API Summary

Slide 19

Slide 19 text

Pragmatische Web APIs mit Node.js API Summit 2016 eBook Die Serverwelt von Node.js https://entwickler.de/press/shortcuts/die-serverwelt-von-node-js-2-262553.html

Slide 20

Slide 20 text

Pragmatische Web APIs mit Node.js API Summit 2016 • Node.js: https://nodejs.org/ • Node.js at Paypal: https://www.paypal-engineering.com/tag/node-js/ • Node.js at Netflix: http://techblog.netflix.com/search/label/node.js • Node.js at scale: http://venturebeat.com/2012/01/24/node-at-google-mozilla-yahoo/ • Restify: http://restify.com/ • SequelizeJS: http://sequelizejs.com/ • Node.js eBook “Die Serverwelt von Node.js”: https://entwickler.de/press/shortcuts/die- serverwelt-von-node-js-2-262553.html Resources

Slide 21

Slide 21 text

Thank you! Questions? Repository https://github.com/thinktecture/apisummit-2016-node-webapi Contact @manuelrauber manuel.rauber@thinktecture.com