Skip to content
Our Sponsors
Open in Anthropic

title: 状态和请求头 - Elysia 教程 layout: false search: false authors: [] head: - - meta - property: 'og:title' content: 状态和请求头 - Elysia 教程

- - meta
  - name: 'description'
    content: 学习如何在 Elysia 中管理状态码和请求头,以有效地控制 HTTP 响应。

- - meta
  - property: 'og:description'
    content: 学习如何在 Elysia 中管理状态码和请求头,以有效地控制 HTTP 响应。

状态

状态码是服务器如何处理请求的指示器。

当您访问一个不存在的页面时,您一定听说过那个臭名昭著的 404 Not Found

这就是一个 状态码

默认情况下,对于成功的请求,Elysia 会返回 200 OK

Elysia 还会根据情况返回许多其他状态码,例如:

  • 400 错误请求
  • 422 无法处理的实体
  • 500 内部服务器错误

你也可以通过使用 status 函数返回你的响应来返回一个状态码。

typescript
import { Elysia } from 'elysia'

new Elysia()
	.get('/', ({ status }) => status(418, "我是一个茶apot'"))
	.listen(3000)

参阅 状态

重定向

类似地,你也可以通过返回一个 redirect 函数将请求重定向到另一个 URL。

typescript
import { Elysia } from 'elysia'

new Elysia()
	.get('/', ({ redirect }) => redirect('https://elysiajs.com'))
	.listen(3000)

参阅 重定向

请求头

与状态码和重定向不同,它们可以直接返回,而在你的应用中你可能需要多次设置请求头。

这就是为什么 Elysia 提供了一个 set.headers 对象来设置请求头,而不是返回一个 headers 函数。

typescript
import { Elysia } from 'elysia'

new Elysia()
	.get('/', ({ set }) => {
		set.headers['x-powered-by'] = 'Elysia'

		return '你好,世界'
	})
	.listen(3000)

因为 headers 代表 请求头,Elysia 通过为响应头添加 set.headers 前缀来区分请求头和响应头。

参阅 请求头

练习

我们来练习一下所学内容。

  1. Return a 418 Status

    Let's create a GET `/` endpoint that returns 418 status

  2. Create a Redirect

    Redirect a GET `/docs` endpoint to `https://elysiajs.com`

  3. Add Powered By Header

    In GET `/` endpoint, return a custom header `x-powered-by` set to `Elysia`

Show answer
  1. 要将状态码设置为 418 I'm a teapot,我们可以使用 status 函数。
  2. 要将 /docs 重定向到 https://elysiajs.com,我们可以使用 redirect 函数。
  3. 要将自定义请求头 x-powered-by 设置为 Elysia,我们可以使用 set.headers 对象。
typescript
import { Elysia } from 'elysia'

new Elysia()
	.get('/', ({ status, set }) => {
		set.headers['x-powered-by'] = 'Elysia'

		return status(418, '你好,Elysia!')
	})
	.get('/docs', ({ redirect }) => redirect('https://elysiajs.com'))
	.listen(3000)
  • index.ts