Skip to content

Commit f6de30d

Browse files
authored
Merge branch 'main' into sarah11918-patch-1
2 parents f3713d1 + de7926b commit f6de30d

2 files changed

Lines changed: 414 additions & 43 deletions

File tree

src/pages/pt-br/core-concepts/endpoints.mdx

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,12 @@ Em sites gerados de forma estática, seus endpoints customizados são chamados d
1212
Endpoints estáticos e SSR são definidos de maneira similar, mas os endpoints SSR suportam funcionalidades adicionais.
1313

1414
## Endpoints de Arquivos Estáticos
15+
1516
Para criar um endpoint customizado, adicione um arquivo `.js` ou `.ts` no diretório `/pages`. A extensão do arquivo será removida durante o processo de build, portanto o nome do arquivo deve conter a extensão que você deseja que os dados usem, por exemplo `src/pages/data.json.ts` se tornará a rota `/data.json`.
1617

17-
Seus endpoints devem exportar uma função `get` (opcionalmente assíncrona) que recebe um objeto com as propriedades (`param` e `request`) como único parâmetro e retorna um objeto contendo a propriedade `body`. Essa função será chamada pelo Astro durante a build, que utilizará os conteúdos da propriedade `body` para gerar o arquivo.
18+
Seus endpoints devem exportar uma função `get` (opcionalmente assíncrona) que recebe um [objeto de contexto](/pt-br/reference/api-reference/#contexto-de-endpoint) com propriedades similares a global `Astro`. Ele retorna um objeto com um `body`, que o Astro irá chamar durante a build e utilizar seu conteúdo para gerar o arquivo.
1819

19-
```js title="src/pages/builtwith.json.ts"
20+
```ts title="src/pages/builtwith.json.ts"
2021
// Se tornará: /builtwith.json
2122
export async function get({params, request}) {
2223
return {
@@ -31,7 +32,7 @@ export async function get({params, request}) {
3132
O objeto retornado também pode conter a propriedade `encoding`. Ela deve ser uma string válida do tipo [`BufferEncoding`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/bdd02508ddb5eebcf701fdb8ffd6e84eabf47885/types/node/buffer.d.ts#L169) aceita pelo método `fs.writeFile` do Node.js. Por exemplo, para gerar uma imagem no formato png retornamos:
3233

3334
```ts title="src/pages/builtwith.json.ts"
34-
export async function get({ params, request }) => {
35+
export async function get({ params, request }) {
3536
const response = await fetch("https://astro.build/assets/press/full-logo-light.png");
3637
const buffer = Buffer.from(await response.arrayBuffer());
3738

@@ -98,7 +99,7 @@ export const get: APIRoute = ({ params, request }) => {
9899
```
99100

100101
## Endpoints do Servidor (Rotas de API)
101-
Tudo descrito na seção de endpoints de arquivos estáticos também pode ser utilizado no modo SSR: arquivos podem exportar uma função `get` que recebe um objeto com as propriedades `params` e `request`.
102+
Tudo descrito na seção de endpoints de arquivos estáticos também pode ser utilizado no modo SSR: arquivos podem exportar uma função `get` que recebe um [objeto de contexto](/pt-br/reference/api-reference/#contexto-de-endpoint) com propriedades similares a global `Astro`.
102103

103104
Porém, diferente do modo `static`, quando você configura o modo `server`, os endpoints serão construídos no momento em que são requisitados. Isso desbloqueia novas funcionalidades que estão indisponíveis durante a build e permite que você construa rotas de API que respondem requisições e seguramente executam código no servidor em runtime.
104105

@@ -198,12 +199,12 @@ export const post: APIRoute = async ({ request }) => {
198199
```
199200

200201
### Redirecionamentos
201-
Como `Astro.redirect` não está disponível em rotas de API, você pode usar o método [`Response.redirect`](https://developer.mozilla.org/en-US/docs/Web/API/Response/redirect) para redirecionar:
202+
O contexto do endpoint exporta um utilitário `redirect()` similar ao `Astro.redirect`:
202203

203204
```js title="src/pages/links/[id].js" {14}
204205
import { getLinkUrl } from '../db';
205206

206-
export async function get({ params }) {
207+
export async function get({ params, redirect }) {
207208
const { id } = params;
208209
const link = await getLinkUrl(id);
209210

@@ -214,7 +215,7 @@ export async function get({ params }) {
214215
});
215216
}
216217

217-
return Response.redirect(link, 307);
218+
return redirect(link, 307);
218219
}
219220
```
220221

0 commit comments

Comments
 (0)