loopbackio / loopbackio/loopback-next

How to build a new API transport extension (or migrate a LB3 one)

Abierto
#5,425 2 comentarios 1 reacción 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Docs epic Extensions Migration
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

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. 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

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.