No REST para Cap'n Web

This ad is not shown to multipass and full ticket holders
React Summit
React Summit 2026
June 11 - 15, 2026
Amsterdam & Online
The biggest React conference worldwide
Upcoming event
React Summit 2026
React Summit 2026
June 11 - 15, 2026. Amsterdam & Online
Learn more
Bookmark
Rate this content

Cap'n Web es una nueva biblioteca de código abierto que te permite exponer APIs de JavaScript y TypeScript a través de la Web, incluyendo sobre HTTP o WebSocket. A diferencia de casi todos los demás sistemas RPC anteriores, Cap'n Web admite pasar funciones y objetos sobre RPC "por referencia". Esta característica, que suena simple, tiene profundas implicaciones que cambian completamente cómo se diseñan las APIs. En esta masterclass presentaré una serie de ejemplos que muestran cómo usar las funciones y objetos de primera clase de Cap'n Web para implementar una variedad de patrones comunes de diseño de API, como autorización, pub-sub y streaming. Mostraré cómo Cap'n Web puede integrarse bien con marcos de UI reactivos, e incluso tocaré brevemente cómo puede ser una herramienta poderosa para el sandboxing de agentes de IA.

This talk has been presented at Node Congress 2026, check out the latest edition of this JavaScript Conference.

Kenton Varda
Kenton Varda
23 min
26 Mar, 2026

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Kenton Varda aboga por el uso de CapnWeb, un protocolo RPC, sobre REST para APIs web, enfatizando los beneficios para humanos y agentes de IA. CapnWeb simplifica las comunicaciones cliente-servidor tratándolas como llamadas a funciones. La verificación de tipos de TypeScript asegura la precisión de los métodos en CapnWeb a través de entornos de ejecución de JavaScript. Los stubs en CapnWeb permiten que las llamadas a métodos se ejecuten en objetos remotos y simulen todos los posibles nombres de métodos para llamadas remotas. Convertir APIs REST a CapnWeb simplifica el código y mejora las llamadas a la API. CapnWeb mejora la funcionalidad de la API con sesiones RPC específicas de objetos y promesas de canalización para la optimización de API multinivel. Los desafíos de seguridad de los agentes de IA se abordan con sandboxing y protección de tokens en CapnWeb. Las capacidades de CapnWeb para agentes de IA incluyen pasar stubs de CapnWeb restringidos y explorar la seguridad basada en capacidades con CapnProto.
Available in English: No REST for Cap'n Web

1. Introducción a CapnWeb

Short description:

Kenton Varda, desarrollador principal de Cloudflare Workers Developer Platform y creador de CapnWeb, aboga por el uso de CapnWeb sobre REST para APIs web, enfatizando sus beneficios para humanos y agentes de IA. CapnWeb es un protocolo RPC que simplifica las comunicaciones cliente-servidor tratándolas como llamadas a funciones, semejante a invocar una biblioteca. Implementar CapnWeb implica definir una interfaz RPC en el lado del servidor y establecer la comunicación cliente-servidor a través de métodos como greet.

Hola. Gracias por venir. Mi nombre es Kenton Varda. Soy el desarrollador principal de la plataforma de desarrollo de Cloudflare Workers, un proyecto que comencé hace unos nueve años. También soy el creador de CapnProto y ahora CapnWeb. Hoy, me gustaría convencerte de que si todos usaran CapnWeb en lugar de REST para APIs web, el mundo sería un lugar mejor, tanto para los humanos como para los agentes de IA.

Entonces, ¿qué es CapnWeb? CapnWeb es un protocolo RPC. RPC significa llamada a procedimiento remoto. Y la idea es que estás expresando tus comunicaciones entre un cliente y un servidor como llamadas a funciones en lugar de como solicitudes y respuestas. Y así se siente como si las comunicaciones fueran como llamar a una biblioteca en lugar de llamar a un servicio de red.

Entonces, ¿cómo se ve eso con CapnWeb? Este es un hola mundo muy básico, cliente y servidor CapnWeb. Así que en el lado del servidor, declaramos esta clase, que define nuestra interfaz RPC. Así que todos los métodos de esta clase van a estar expuestos al cliente. Así que tenemos un método greet aquí. Devuelve hola nombre. Y luego aquí abajo está básicamente el código estándar para configurar la aceptación de estas solicitudes RPC en CloudFlare Workers.

2. Using CapnWeb Across JavaScript Runtimes

Short description:

CapnWeb, compatible con varios entornos de ejecución de JavaScript, utiliza WebSocket para una comunicación cliente-servidor eficiente. La comprobación de tipos de TypeScript garantiza la precisión de los métodos, evitando errores en tiempo de ejecución. Importar tipos de servidor en CapnWeb permite estructuras de métodos correctas sin interdependencias, promoviendo una interacción fluida entre cliente y servidor.

código estándar para configurar la aceptación de estas solicitudes RPC en CloudFlare Workers. Así que CapnWeb no es exclusivo de CloudFlare Workers. Soporta todos los entornos de ejecución de JavaScript. Pero estoy usando, bueno, el código es un poco diferente para cada entorno de ejecución.

Y estoy usando CloudFlare Workers aquí. Así que todo lo que hay aquí es un manejador HTTP estándar de CloudFlare Workers. Y simplemente está pidiendo a la biblioteca CapnWeb que construya una respuesta a partir de la solicitud y exponga una instancia de esta clase greeter al cliente. El lado del cliente es bastante simple también.

El cliente simplemente llama a esta función de CapnWeb, establece una nueva sesión RPC sobre WebSocket a esta URL. CapnWeb también soporta un transporte HTTP regular y algunas otras opciones. Pero realmente funciona mejor sobre WebSocket por razones que verás en un momento.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

El Futuro de las Herramientas de Rendimiento
JSNation 2022JSNation 2022
21 min
El Futuro de las Herramientas de Rendimiento
Top Content
Today's Talk discusses the future of performance tooling, focusing on user-centric, actionable, and contextual approaches. The introduction highlights Adi Osmani's expertise in performance tools and his passion for DevTools features. The Talk explores the integration of user flows into DevTools and Lighthouse, enabling performance measurement and optimization. It also showcases the import/export feature for user flows and the collaboration potential with Lighthouse. The Talk further delves into the use of flows with other tools like web page test and Cypress, offering cross-browser testing capabilities. The actionable aspect emphasizes the importance of metrics like Interaction to Next Paint and Total Blocking Time, as well as the improvements in Lighthouse and performance debugging tools. Lastly, the Talk emphasizes the iterative nature of performance improvement and the user-centric, actionable, and contextual future of performance tooling.
Rome, ¡una cadena de herramientas moderna!
JSNation 2023JSNation 2023
31 min
Rome, ¡una cadena de herramientas moderna!
Top Content
Rome is a toolchain built in Rust that aims to replace multiple tools and provide high-quality diagnostics for code maintenance. It simplifies tool interactions by performing all operations once, generating a shared structure for all tools. Rome offers a customizable format experience with a stable formatter and a linter with over 150 rules. It integrates with VCS and VLSP, supports error-resilient parsing, and has exciting plans for the future, including the ability to create JavaScript plugins. Rome aims to be a top-notch toolchain and welcomes community input to improve its work.
Conquistando la Complejidad: Refactorización de Proyectos JavaScript
JSNation 2024JSNation 2024
21 min
Conquistando la Complejidad: Refactorización de Proyectos JavaScript
Top Content
Today's Talk explores the complexity in code and its impact. It discusses different methods of measuring complexity, such as cyclomatic complexity and cognitive complexity. The importance of understanding and conquering complexity is emphasized, with a demo showcasing complexity in a codebase. The Talk also delves into the need for change and the role of refactoring in dealing with complexity. Tips and techniques for refactoring are shared, including the use of language features and tools to simplify code. Overall, the Talk provides insights into managing and reducing complexity in software development.
Mejorando la Felicidad del Desarrollador con IA
React Summit 2023React Summit 2023
29 min
Mejorando la Felicidad del Desarrollador con IA
GitHub Copilot is an auto-completion tool that provides suggestions based on context. Research has shown that developers using Copilot feel less frustrated, spend less time searching externally, and experience less mental effort on repetitive tasks. Copilot can generate code for various tasks, including adding modals, testing, and refactoring. It is a useful tool for improving productivity and saving time, especially for junior developers and those working in unfamiliar domains. Security concerns have been addressed with optional data sharing and different versions for individuals and businesses.
Automatiza el Navegador con la API de Renderizado del Navegador de Workers
JSNation 2024JSNation 2024
20 min
Automatiza el Navegador con la API de Renderizado del Navegador de Workers
The Talk discusses browser automation using the Worker's Browser Rendering API, which allows tasks like navigating websites, taking screenshots, and creating PDFs. Cloudflare integrated Puppeteer with their workers to automate browser tasks, and their browser rendering API combines remote browser isolation with Puppeteer. Use cases for the API include taking screenshots, generating PDFs, automating web applications, and gathering performance metrics. The Talk also covers extending sessions and performance metrics using Durable Objects. Thank you for attending!
Análisis estático en JavaScript: Lo fácil y lo difícil
JSNation 2023JSNation 2023
23 min
Análisis estático en JavaScript: Lo fácil y lo difícil
Static analysis in JavaScript involves analyzing source code without executing it, producing metrics, problems, or warnings. Data flow analysis aims to determine the values of data in a program. Rule implementation in JavaScript can be straightforward or require extensive consideration of various cases and parameters. JavaScript's dynamic nature and uncertainty make static analysis challenging, but it can greatly improve code quality.

Workshops on related topic

Pragmática 101 sobre Herramientas JS Personalizadas para tu Proyecto
JSNation US 2025JSNation US 2025
122 min
Pragmática 101 sobre Herramientas JS Personalizadas para tu Proyecto
Featured Workshop
Will Klein
Will Klein
Vamos a desmitificar los secretos de las herramientas modernas de JavaScript. En este masterclass, aprenderás cómo funcionan los linters, compiladores y transformaciones de código. Darás tus primeros pasos construyendo tus propias herramientas de desarrollo, escribiendo una regla de ESLint, un plugin de compilador y una transformación de código. Aprende estas habilidades para ayudar a tu equipo y profundizar tu comprensión de los lenguajes de computadora.Plan del Masterclass:Una vista previa de cómo se pueden usar los ASTsUn breve recorrido de cómo funcionan los compiladoresUna introducción a trabajar con un ASTEl secreto para hacer miles de cambios en segundosCómo aplicar esta habilidad
Soluciona el 100% de tus errores: Cómo encontrar problemas más rápido con la Reproducción de Sesiones
JSNation 2023JSNation 2023
44 min
Soluciona el 100% de tus errores: Cómo encontrar problemas más rápido con la Reproducción de Sesiones
WorkshopFree
Ryan Albrecht
Ryan Albrecht
¿Conoces ese molesto error? ¿El que no aparece localmente? Y no importa cuántas veces intentes recrear el entorno, no puedes reproducirlo. Has revisado las migas de pan, leído la traza de pila y ahora estás jugando al detective para unir los tickets de soporte y asegurarte de que sea real.
Únete al desarrollador de Sentry, Ryan Albrecht, en esta charla para aprender cómo los desarrolladores pueden utilizar la Reproducción de Sesiones, una herramienta que proporciona reproducciones de video de las interacciones de los usuarios, para identificar, reproducir y resolver errores y problemas de rendimiento más rápido (sin golpear tu cabeza contra el teclado).