loopbackio / loopbackio/loopback-next
How to build a new API transport extension (or migrate a LB3 one)
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- TypeScript
- Estrellas
- 5.1k
- Forks
- 1.1k
- Merge medio
- 2 d 21 h
- PR fusionados (30 d)
- 27
Descripción
This story is extracted from #4099, where we researched existing LoopBack 3 components and various techniques they use.
Now we need to write documentation for extension authors to show how to solve the following use cases in LoopBack 4:
1. A new server type to handle requests coming from a non-REST source, e.g. Primus/WebSockets and RabbitMQ.
1. WebSockets: mount WebSocket-handler on the underlying http server used by `@loopback/rest`.
1. Message queues: allow consumers to also produce (publish) new messages, e.g. as a response to the incoming message.
Prior work:
- https://loopback.io/doc/en/lb4/Creating-servers.html
I see the following major areas to cover (feel free to add more items to this list):
- How can a transport implementation discover endpoint handlers (controllers, routes, message consumers, etc.) registered in the application context? (Related: How can extensions introspect application artifacts #5426)
- Also how to handle handlers added dynamically after application has started
- How should be a transport extension structured like?
- Ensure that `app.start()` will start the server/subscriber, `app.stop()` stop it
- How to create a per-request context and populate it with request-specific metadata
In most cases, the new content will be useful to authors building new LB4 components too, therefore we should structure the content in two parts:
- A guide explaining how to build a component contributing a service, this should go to [Extending LoopBack](https://loopback.io/doc/en/lb4/Extending-LoopBack-4.html)
- A guide explaining how to migrate LB3 components, this guide should go to [Migrating components and extensions](https://loopback.io/doc/en/lb4/migration-extensions-overview.html) and focus on aspects unique to extensions migrating from LB3 and refer to content in [Extending LoopBack](https://loopback.io/doc/en/lb4/Extending-LoopBack-4.html) wherever possible & appropriate.
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Lee primero la documentación existente sobre Creating servers y, después, revisa las guías Extending LoopBack 4 y Migrating components and extensions. Cubre los servicios de componentes, el descubrimiento de controladores de transporte, los controladores dinámicos, el inicio y la detención de la aplicación y el contexto por solicitud para WebSockets y colas de mensajes. Se considera completado cuando ambas guías explican claramente los casos de uso indicados y las consideraciones específicas de la migración.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- node.js, typescript
- Área
- backend-api-design, documentation
- Tipo de issue
- Documentación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 28/100