Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

117
Visualizações
¿Generar un cliente http detrás de una interfaz mecanografiada? ¿Es posible?

Estoy tratando de entender los decoradores que no son anotaciones de Java sino más bien preprocesadores en este artículo y también encontré esta pregunta SO sobre la configuración de información en una función. Digamos que tengo una interfaz así

 export default interface UserService { @Path("/users/create") @POST createUser(user: CreateUserRequest): Promise<CreateUserResponse>; @Path("/users/delete") @POST deleteUser(user: DeleteUserRequest): Promise<DeleteUserResponse>; }

nota al margen: sería genial usar este cliente generado en la interfaz de usuario de reacción, así como en nodejs

Quiero que mi @Path y @POST, @GET guarden información que puedo leer y creo

 class Path(path:string): def __init__(self, path): self.path = path def __call__(self, func): func.pathAnnotation = self return func

Leí que no puedo recorrer los métodos en una interfaz, pero me gustaría generar el cliente http que implementa esta interfaz para que cualquier desarrollador de API cree, automáticamente crea la implementación. (En java, usamos Proxy.java para generar una implementación). En el lado del servidor, el controlador implementa exactamente la misma API y me gusta generar el 'andamio', es decir, la solicitud http a qué punto final llamar si es posible (no estoy seguro de poder hacerlo en nodejs todavía).

EDITAR: una idea: tal vez, creo una clase o clase abstracta y cada método arroja una excepción "Usar XXXFactory para generar la implementación de esta clase". ¿Cómo hago un bucle sobre el método en esa clase? ¿Y puedo crear clases que amplíen todas estas 'apis' en tiempo de ejecución de modo que pueda inyectarlo para que todos lo usen (como Proxy.java en el mundo de Java)?

EDITAR: tal vez podría hacer esto en javascript con una clase prototipo de alguna manera ... generar todos los métodos para llamar a un método con firma

 Promise<Object> invoke(String method, object[] paramsToMethod);

Luego, puedo buscar el método y las propiedades @Path y @GET/@POST en ese método. ¿Puede una clase prototipo extender una clase en javascript de tal manera que esta clase implemente cualquier API definida (quizás definida en mecanografiado)? Entonces, ¿tengo todas las API implementadas por el mismo código para cada microservicio como lo hacemos en Java? (Esto significa que el equipo de la plataforma puede intercambiar protocolos y los desarrolladores ya no se preocupan por los protocolos como http, http2, binario, etc.)

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

De acuerdo con la solicitud, me tomé un tiempo para jugar con la reflexión. La reflexión se necesita principalmente para que el cliente se ajuste automáticamente a lo que espera el servicio (tipo de parámetros/tipo de retorno), y creo que podría ser posible con reflect-metadata .

Bien, la idea es que los decoradores almacenen metadatos sobre el método en un mapa, donde una clave es la clase y el valor es una colección de métodos con metadatos.

Luego, donde obtiene el cliente, agrega todos los metadatos para cada método en una función que se puede usar.

Es un comienzo vago, pero creo que puede funcionar. De hecho, también podría convertir esto en un pequeño fragmento o biblioteca si tengo tiempo.

Pero en realidad, este debería ser un cliente generado estáticamente, no uno dinámico. Porque entonces es mucho más fácil validar y generar el código.

Patio de juegos

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda