DocsPrimeiros passos

O que é Nexy?

Nexy é uma estrutura Python para aplicações web fullstack: suas páginas e sua API residem em um projeto e são atendidas por um servidor.

O que você ganha

  • Páginas em Python. Um arquivo .nexy é HTML com algumas linhas de Python no topo; um arquivo .md também é uma página. Não é necessário JavaScript para renderizar uma página.
  • Uma API no mesmo projeto. Um arquivo .py em src/routes/ responde a solicitações HTTP: uma função chamada GET responde GET, uma função chamada POST responde POST.
  • Uma API no mesmo projeto. Um controlador responde a solicitações HTTP: seu método get responde GET, seu método post responde POST, e um módulo agrupa controladores e seus serviços.
  • Uma API no mesmo projeto. O roteador FastAPI que você já possui continua respondendo, e as páginas e arquivos de rota de src/routes/ respondem ao lado dele.
  • Documentação da API gratuitamente. Cada rota da API aparece em um esquema OpenAPI, e Scalar a mostra como uma referência interativa em /docs.
  • Formulários que chamam Python. Um formulário, ou uma chamada digitada no navegador, atinge a mesma função Python.
  • Uma estrutura de frontend quando você quiser. React, Vue, Svelte, Solid ou Preact, para um componente ou para todo o site.
  • Um comando para funcionar, um para enviar. nx dev recarrega conforme você salva; nx build prepara a produção.

Em que é construído

A versão atual, 2.2, baseia-se em ferramentas que você já deve conhecer:

Parte Construído em O que isso significa para você
Servidor e API FastAPI uma rota de API é uma rota FastAPI: Pydantic validação e dependências funcionam normalmente
Referência da API OpenAPI e Escalar o esquema está em /openapi.json, a referência em /docs
Páginas Jinja2 uma página .nexy usa tags Jinja2 como {{ title }}
Front-end (opcional) Vite apenas com um framework frontend, que também precisa de Node.js

Uma primeira página e um primeiro endpoint

Uma página, em /hello:

src/rotas/hello.nexy
---title: prop[str] = "Hello"---<h1>{{ title }}</h1>

Um endpoint, em GET /api/items, listado em /docs sem nenhum código extra:

src/routes/api/items.py
from nexy.http import Request  async def GET(request: Request):    return {"items": []}

Uma visualização e os controladores que respondem /hello/ e GET /api/items/. O endpoint está listado em /docs sem nenhum código extra, e uma URL sem a última barra redireciona para ele:

src/apps/hello_view.nexy
---title: prop[str] = "Hello"---<h1>{{ title }}</h1>
src/apps/hello_controller.py
from nexy.decorators import Controllerfrom nexy.hooks import useViews  @Controller("/hello")class HelloController:    async def get(self):        return useViews("src/apps/hello_view.nexy", context={"title": "Hello"})  @Controller("/api/items")class ItemsController:    async def get(self):        return {"items": []}

O módulo raiz os lista e useRouter = AppModule em nexyconfig.py monta-o:

src/apps/app_module.py
from nexy.decorators import Module from .hello_controller import HelloController, ItemsController  @Module()class AppModule:    controllers = [HelloController, ItemsController]

O que Nexy deixa para você

O banco de dados, o login e as regras sobre quem pode fazer o que pertencem à sua aplicação, então você escolhe as bibliotecas. Bancos de dados e Middleware e segurança mostram onde cada um se conecta.

Próximas etapas

Editar no GitHub

Enter abre o resultado, Esc fecha.