Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Comparison nodejs frameworks using Polls API
Search
Ladislav Prskavec
May 23, 2015
Technology
0
70
Comparison nodejs frameworks using Polls API
3 NodeJS implementations of Polls API.
All implementations are tested by Dredd.
Ladislav Prskavec
May 23, 2015
Tweet
Share
More Decks by Ladislav Prskavec
See All by Ladislav Prskavec
How to make own observability solution?
abtris
0
82
OpenTelemetry as best way how to instrument your CICD pipeline
abtris
0
130
Prague Go Meetup #12 Introductions
abtris
0
21
How we run stateful services for customers in Kubernetes
abtris
0
180
Go Release 1.20
abtris
0
99
CI pipelines should be code! Dagger Go SDK
abtris
1
210
Getting started with fuzzing
abtris
0
210
Jamstack in 2021
abtris
0
44
How we build services in Oracle Cloud Infrastructure
abtris
1
70
Other Decks in Technology
See All in Technology
アプリがつくるNOT A HOTELブランド
hokuts
1
450
強みを伸ばすキャリアデザイン
yug1224
0
200
元インフラエンジニアに成る / Human Resources to Human Relations
bobtani
3
810
長期間TiDBを使ってきた話 @ 私たちはなぜNewSQLを使うのかTiDB選定5社が語る選定理由と活用LT / Experiences with TiDB Over Time
chibiegg
2
710
普段有償でサポート業務をしているCSAが技術知見を無料で公開する理由
07jp27
1
640
「ふりかえりのふりかえり」をふりかえり、実のあるふりかえりにする
naitosatoshi
0
220
日本におけるデータエンジニアリングのこれまでとこれから
foursue
11
2.4k
レガシーをぶっ壊せ。AEONで始めるDevRelの話 / Qiita Night 2024-2-22
aeonpeople
3
150
Delivering Millions of Messages within seconds @ Duolingo
pelelgrino
0
330
Tebiki株式会社 エンジニア採用資料
tebiki
0
4.1k
Databricksを活用してDELISH KITCHENのレシピレコメンドを開発した話
furu8
0
250
コンパウンドスタートアップのためのスケーラブルでセキュアなInfrastructure as Codeパイプラインを考える / Scalable and Secure Infrastructure as Code Pipeline for a Compound Startup
yuyatakeyama
3
2.4k
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
242
12k
Happy Clients
brianwarren
91
6.4k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
13
1.5k
Gamification - CAS2011
davidbonilla
76
4.6k
A Tale of Four Properties
chriscoyier
150
22k
Git: the NoSQL Database
bkeepers
PRO
422
63k
Done Done
chrislema
178
15k
Building Flexible Design Systems
yeseniaperezcruz
318
37k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
24
2.3k
Debugging Ruby Performance
tmm1
70
11k
Bash Introduction
62gerente
604
210k
Optimizing for Happiness
mojombo
370
69k
Transcript
Comparison NodeJS frameworks
[email protected]
@abtris www.praguejs.cz @jsconfcz
None
express koa hapi github stars 18861 6174 4228 contributors 178
59 116 downloads / w 525941 8769 11966 stack overflow 14853 138 66 npm -ls | wc -l 48 36 48 file size 3896 2000 50392
http://docs.nodeschoolhk.apiary.io/
https://github.com/apiaryio/dredd
Init server
"express": "^4.12.3" (function() { 'use strict'; var express = require('express');
var app = express(); app.set('json spaces', 2); .... var server = app.listen(3003, function() { var host = server.address().address; var port = server.address().port; console.log('Example app listening at http://%s:%s', host, port); }); }());
"hapi": "^8.4.0" var Hapi = require('hapi'); var server = new
Hapi.Server(); server.connection({port: 3001}); .... // Start the server server.start(function() { console.log('Server running at:', server.info.uri); });
"koa": "^0.20.0" "use strict"; var koa = require('koa'); var route
= require('koa-route'); var app = koa(); require('koa-qs')(app); .... app.listen(3000);
Routing
"express": "^4.12.3" app.get('/questions/:question_id', function(req, res) { res.status(200).json({"question":"Favourite programming language?"...}]}); });
app.post('/questions/:question_id/choices/:choice_id', function(req, res) { res.set('Location', '/questions/' + req.params.question_id); res.status(201).send(''); });
"hapi": "^8.4.0" server.route({ method: 'GET', path: '/questions/{question_id}', handler: function(request, reply)
{ reply({"question":"Favourite programming language?"...}); } }); server.route({ method: 'POST', path: '/questions/{question_id}/choices/{choice_id}', handler: function(request, reply) { reply().code(201).header('Location', '/questions/' + request.params.question_id); } });
"koa": "^0.20.0" app.use(route.get('/questions/:question_id', function *(question_id) { this.body = {"question":"Favourite programming
language?"...}; })); app.use(route.post('/questions/:question_id/choices/:choice_id', function *(question_id, choice_id) { this.status = 201; this.set('Location', '/questions/' + question_id); this.body = ''; }));
Testing • Dredd var hooks = require('hooks'); var before =
hooks.before; hooks.beforeEach(function(transaction) { if (transaction.expected.headers['Content-Type'] == 'application/json') { transaction.expected.headers['Content-Type'] = 'application/json; charset=utf-8'; } });
Github repository of project: https://github.com/abtris/nodeschool-hk-2015-05-23 Ideas how project improve: •
you can fork and contribute • you can try add 404, 500 pages • you can try persistent layer using Redis