response
Yanıt
res
nesnesi, bir tinyhttp uygulamasının HTTP isteği aldığında gönderdiği HTTP yanıtını temsil eder.
Özellikler
res.app
Bu özellik
bindAppToReqRes
ayarı ile etkinleştirilebilir.
Şu anda kullanılan uygulamanın bir referansına işaret eder.
app.use((req, res) => {
res.json(res.app.settings)
})
Yöntemler
res.append
Belirtilen value
değerini HTTP yanıt header
alanına ekler. Eğer header daha önce ayarlanmamışsa, belirtilen değerle birlikte yeni bir header oluşturur. Değer parametresi bir dize veya bir dizi olabilir.
res.append()
çağrısından sonrares.set()
çağrılması, daha önce ayarlanan header değerini sıfırlar.
res.append('Link', ['<http://localhost/>', '<http://localhost:3000/>'])
res.append('Set-Cookie', 'foo=bar; Path=/; HttpOnly')
res.append('Warning', '199 Çeşitli uyarı')
res.cookie
Cookie name
değerini value
olarak ayarlar. value
parametresi bir dize veya JSON'a dönüştürülmüş bir nesne olabilir.
options
parametresi aşağıdaki özelliklere sahip bir nesne olabilir.
Özellik | Tür | Açıklama |
---|---|---|
domain | string | Cookie için alan adı. Varsayılan olarak uygulamanın alan adını alır. |
encode | Function | Cookie değeri kodlaması için kullanılan senkron bir fonksiyon. Varsayılan olarak encodeURIComponent kullanır. |
expires | Date | Cookie'nin GMT cinsinden sona erme tarihi. Belirtilmemişse veya 0 olarak ayarlandığında, bir oturum çerezi oluşturur. |
httpOnly | boolean | Cookie'nin yalnızca web sunucusu tarafından erişilebilir olmasını işaretler. |
maxAge | number | Geçerlilik süresini mevcut zamana göre milisaniye cinsinden ayarlamak için kullanışlı bir seçenektir. |
path | string | Cookie için yol. Varsayılan olarak “/” alır. |
secure | boolean | Cookie'nin yalnızca HTTPS ile kullanılmasını işaretler. |
signed | boolean | Cookie'nin imzalanıp imzalanmayacağını belirtir. |
sameSite | boolean \| string | “SameSite” Set-Cookie niteliğinin değeri. Daha fazla bilgi. |
res.cookie()
yönteminin yaptığı şey, sağlanan seçeneklerle HTTP Set-Cookie header'ını ayarlamaktır. Belirtilmeyen herhangi bir seçenek, RFC 6265'te belirtilen değer varsayılanlarını alır.
res.cookie('name', 'tobi', {
domain: '.example.com',
path: '/admin',
secure: true,
})
// "httpOnly" ve "expires" parametrelerini etkinleştir
res.cookie('rememberme', '1', {
expires: new Date(Date.now() + 900000),
httpOnly: true,
})
res.clearCookie
Belirtilen name
ile çerezi temizler. options
nesnesi hakkında ayrıntılar için res.cookie()
sayfasına bakın.
Web tarayıcıları ve diğer uyumlu istemciler, verilen seçenekler
res.cookie()
ile verilenlerle özdeş olduğu sürece sadece çerezi temizleyecektir; expires ve maxAge hariç.
res.cookie('name', 'tobi', { path: '/admin' })
res.clearCookie('name', { path: '/admin' })
res.end
Yanıt sürecini sonlandırır. Bu yöntem, http.ServerResponse'ın response.end() metodundan gelir.
Ham veriler göndermek veya yanıtı hiç veri olmadan sonlandırmak için kullanılabilir. Veri ile yanıt vermeniz gerekiyorsa, uygun içerik tipi başlıkları ayarlanmışsa, bunun yerine res.send()
ve res.json()
gibi yöntemler kullanmalısınız.
res.end()
res.status(404).end()
res.json
JSON yanıtı gönderir. Bu yöntem, parametreyi JSON.stringify()
kullanarak bir JSON dizesine dönüştürerek yanıt gönderir (doğru Content-Type
başlığı ile).
Gövde herhangi bir türde JSON olabilir; nesne, dizi, string
, boolean
, number
veya null
dahil.
res.json(null)
res.json({ user: 'tobi' })
res.status(500).json({ error: 'message' })
res.send
HTTP yanıtını gönderir.
Gövde bir Buffer
nesnesi, bir dize, bir nesne veya bir dizi olabilir.
res.send(Buffer.from('whoop'))
res.send({ some: 'json' })
res.send('<p>bazı html</p>')
res.status(404).send('Üzgünüm, bunu bulamıyoruz!')
res.status(500).send({ error: 'bir şey patladı' })
Bu yöntem, basit akış dışı yanıtlar için birçok yararlı görev gerçekleştirir: Örneğin, otomatik olarak uygun Content-Length
başlığı değerini ayarlar ve otomatik HEAD ve HTTP önbellek tazeliği desteği sağlar.
Parametre bir Buffer
nesnesi olduğunda, yöntem Content-Type
yanıt başlık alanını "application/octet-stream"
olarak ayarlar; daha önce tanımlanmamışsa aşağıda gösterildiği gibi:
res.set('Content-Type', 'text/html')
res.send(Buffer.from('<p>bazı html</p>'))
Parametre bir dize olduğunda, yöntem Content-Type
'ı "text/html"
olarak ayarlar:
res.send('<p>bazı html</p>')
Parametre bir Dizi veya Nesne olduğunda, Express JSON temsilini yanıt verir (tıpkı res.json
gibi):
res.send({ user: 'tobi' })
res.send([1, 2, 3])
res.status
Yanıt için HTTP durumunu ayarlar. Node’un response.statusCode
'sinin zincirlenebilir bir takma adıdır.
res.status(403).end()
res.status(400).send('Kötü İstek')
res.sendStatus
Yanıt HTTP durum kodunu statusCode'ye ayarlar ve durum metnini yanıt gövdesi olarak gönderir.
res.sendStatus(200) // res.status(200).send('OK') ile eşdeğerdir
res.sendStatus(403) // res.status(403).send('Yasaklı') ile eşdeğerdir
res.sendStatus(404) // res.status(404).send('Bulunamadı') ile eşdeğerdir
res.sendStatus(500) // res.status(500).send('Sunucu Hatası') ile eşdeğerdir
Desteklenmeyen bir durum kodu belirtilirse, HTTP durumu hala statusCode olarak ayarlanır ve kodun dize versiyonu yanıt gövdesi olarak gönderilir.
res.sendStatus(9999) // res.status(9999).send('9999') ile eşdeğerdir
Daha fazla HTTP Durum Kodu hakkında
res.sendFile
Bir dosyayı yanıt akışına ileterek gönderir. Ayrıca, uygun bir Content-Type
başlık alanını ayarlamak için uzantıyı kontrol eder.
Yol argümanı mutlak olmalıdır. Göreceli bir yol kullanmak için önce
root
seçeneğini belirtin.
res.sendFile('song.mp3', { root: process.cwd() }, (err) => console.log(err))
res.set
Yanıtın HTTP başlık field
ini value
olarak ayarlar. Birden fazla alanı bir kerede ayarlamak için, parametre olarak bir nesne geçiririn.
res.set('Content-Type', 'text/plain')
res.set({
'Content-Type': 'text/plain',
'Content-Length': '123',
ETag: '12345',
})
res.header
için takma addır.
res.links
Parametre olarak sağlanan links
değerlerini bir araya getirerek yanıtın Link
HTTP başlık alanını doldurur.
Örneğin, aşağıdaki çağrı:
res.links({
next: 'http://api.example.com/users?page=2',
last: 'http://api.example.com/users?page=5',
})
Aşağıdaki sonuçları verir:
Link: <http://api.example.com/users?page=2>; rel="next",
<http://api.example.com/users?page=5>; rel="last"
res.location
Yanıtın Location HTTP başlığını belirtilen yol parametresi ile ayarlar.
res.location('/foo/bar')
res.location('http://example.com')
res.location('back')
"back"
değerine sahip bir path
, özel bir anlam taşır, istemin Referer
başlığında belirtilen URL'yi ifade eder. Referer başlığı belirtilmemişse, "/"
değerine karşılık gelir.
URL'yi kodladıktan sonra, daha önce kodlanmamışsa, tinyhttp belirtilen URL'yi tarayıcıya
Location
başlığı içinde geçirir; herhangi bir doğrulama olmaksızın. Tarayıcılar, mevcut URL veya referans URL'sinden ve Location başlığındaki belirtilen URL'den, niyet edilen URL'yi türetmekten sorumludur ve kullanıcıyı buna göre yönlendirir.
res.render
Önceden tanımlanmış bir motor kullanarak bir şablonu işler ve sonucun yanıtında gönderir.
import { App } from '@tinyhttp/app'
import ejs from 'ejs'
const app = new App()
app.engine('ejs', ejs.renderFile)
app.use((_, res) => void res.render('index.ejs', { name: 'EJS' }))
app.listen(3000, () => console.log(`http://localhost:3000 üzerinde dinleniyor`))
res.vary
Vary yanıt başlığına, daha önce yoksa alanı ekler.
res.vary('User-Agent').render('docs')
res.format
Accept
başlığındaki değere dayalı koşullu yanıt gönderir. Örneğin, Accept
HTML içeriyorsa, HTML seçeneği gönderilecektir.
res.format({
html: (req, res) => void res.send('<h1>HTML için Merhaba Dünya</h1>')
text: (req, res) => void res.send('Metin için Merhaba Dünya')
})
Ve Accept
başlığına bağlı olarak farklı yanıtlar gönderecektir:
curl -H "Accept: text/html" localhost:3000
# <h1>HTML için Merhaba Dünya</h1>
curl localhost:3000
# Metin için Merhaba Dünya
res.redirect
Belirtilen URL'ye yönlendirmek için 302 (veya başka bir) durum kodu ve Location
başlığı gönderir.
res.redirect('/another-page')
// özel durum
res.redirect('/some-other-page', 300)
res.type
Content-Type
HTTP başlığını belirtilen tür için mime.lookup() ile belirlenen MIME türüne ayarlar. Eğer tür /
karakterini içeriyorsa, Content-Type
türüne ayar yapar.
res.type('.html')
// => 'text/html'
res.type('html')
// => 'text/html'
res.type('json')
// => 'application/json'
res.type('application/json')
// => 'application/json'
res.type('png')
// => 'image/png'
res.jsonp
JSONP geri çağrı desteği ile JSON yanıtı gönderir. res.jsonp
pek yaygın olarak kullanılmaz, bu nedenle ayrı bir paket içerisinde bulunur - @tinyhttp/jsonp
Bunu etkinleştirmenin yolu:
import { jsonp } from '@tinyhttp/jsonp'
app.use((req, res, next) => {
res.jsonp = jsonp(req, res, app)
next()
})
app.get('/', (req, res) => {
res.jsonp({ some: 'jsonp' })
})