Ana içeriğe geç

Fastify

Fastify, HTTPS (h2) veya düz metin (h2c) üzerinden HTTP2'yi destekler.

Şu anda, Fastify aracılığıyla HTTP2'ye özgü API'lar mevcut değil, ancak Node'un req ve res nesnelerine Request ve Reply arayüzü aracılığıyla erişilebilir. PR'lar memnuniyetle karşılanır.

Güvenli (HTTPS)

HTTP2, tüm modern tarayıcılar tarafından yalnızca güvenli bir bağlantı üzerinden desteklenmektedir:

'use strict'

const fs = require('node:fs')
const path = require('node:path')
const fastify = require('fastify')({
http2: true,
https: {
key: fs.readFileSync(path.join(__dirname, '..', 'https', 'fastify.key')),
cert: fs.readFileSync(path.join(__dirname, '..', 'https', 'fastify.cert'))
}
})

fastify.get('/', function (request, reply) {
reply.code(200).send({ hello: 'world' })
})

fastify.listen({ port: 3000 })

ALPN müzakeresi, hem HTTPS hem de HTTP/2'nin aynı soket üzerinden desteklenmesini sağlar. Node çekirdek req ve res nesneleri ya HTTP/1 ya da HTTP/2 olabilir. Fastify bunu kutudan çıkar çıkmaz destekler:

'use strict'

const fs = require('node:fs')
const path = require('node:path')
const fastify = require('fastify')({
http2: true,
https: {
allowHTTP1: true, // HTTP1 için geri dönüş desteği
key: fs.readFileSync(path.join(__dirname, '..', 'https', 'fastify.key')),
cert: fs.readFileSync(path.join(__dirname, '..', 'https', 'fastify.cert'))
}
})

// bu rota her iki protokol üzerinden de erişilebilir
fastify.get('/', function (request, reply) {
reply.code(200).send({ hello: 'world' })
})

fastify.listen({ port: 3000 })

Yeni sunucunuzu test edebilirsiniz:

$ npx h2url https://localhost:3000

Düz veya güvensiz

Eğer mikro hizmetler inşa ediyorsanız, HTTP2'ye düz metin üzerinden bağlanabilirsiniz, ancak bu tarayıcılar tarafından desteklenmemektedir.

'use strict'

const fastify = require('fastify')({
http2: true
})

fastify.get('/', function (request, reply) {
reply.code(200).send({ hello: 'world' })
})

fastify.listen({ port: 3000 })

Yeni sunucunuzu test edebilirsiniz:

$ npx h2url http://localhost:3000