Skip to content

Commit 188f35a

Browse files
authoredFeb 28, 2023
translation: Translation of api-gateway readme to Spanish, closes iluwatar#2472 (iluwatar#2474)
* Create README.md Spanish translation located in ./localization/es/api-gateway * Changed Api gateway link for diagram location
1 parent c34ad29 commit 188f35a

File tree

1 file changed

+168
-0
lines changed

1 file changed

+168
-0
lines changed
 

‎localization/es/api-gateway/README.md

Lines changed: 168 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,168 @@
1+
---
2+
title: API Gateway
3+
category: Architectural
4+
language: es
5+
tag:
6+
- Cloud distributed
7+
- Decoupling
8+
- Microservices
9+
---
10+
11+
## Motivo
12+
13+
Agregar llamadas a los microservicios en un mismo lugar, la puerta de enlace API (API Gateway). El usuario
14+
hace un llamada simple al API Gateway, y la API Gateway hace la llamada a cada microservicio relevante.
15+
16+
## Explicaición
17+
18+
Con el patrón de microservicios, el cliente puede necesitar datos de múltiples microservicios. Si el
19+
cliente llamara a cada microservicio de forma directe, podría ocasionar tiempos de carga largos, ya que
20+
el cliente tendría que hacer una solicitud de red para cada microservicio llamado. Además, tener la
21+
la llamada del cliente a cada microservicio vincula directamente al cliente con ese microservicio - si la
22+
implementacion interna del cambio de microservicios (por ejemplo, si dos microservicios se combinan en
23+
algún momento en el futuro) o si la ubicación (host y puerto) de un microservicio cambia, entonces cada
24+
cliente que hace uso de esos microservicios debe ser actualizado.
25+
26+
La intención del patrón API Gateway es aliviar algunos de estos problemas. En el patrón API Gateway,
27+
se coloca una entidad adicional (la API Gateway) entre el cliente y los microservicios.
28+
El trabajo de API Gateway es agregar las llamadas a los microservicios. En lugar de que el cliente
29+
llame a cada microservicio individualmente, el cliente llama al API Gateway una sola vez. la API
30+
Gateway luego llama a cada uno de los microservicios que necesita el cliente.
31+
32+
Ejemplo real
33+
34+
> Estamos implementando un sistema de microservicios y API Gateway para un sitio e-commerce. En este
35+
> sistema API Gateway realiza llamadas a los microservicios Image y Price. (Imagen y Precio)
36+
37+
En otras palabras
38+
39+
> Para un sistema implementado utilizando una arquitectura de microservicios, API Gateway es el único
40+
> punto de entrada que agrega las llamadas a los microservicios individuales.
41+
42+
Wikipedia dice
43+
44+
> API Gateway es un servidor que actúa como un front-end de API, recibe solicitudes de API, aplica la
45+
> limitación y políticas de seguridad, pasa las solicitudes al servicio back-end y luego devuelve la
46+
> respuesta al solicitante. Una puerta de enlace a menudo incluye un motor de transformación para
47+
> orquestar y modificar las solicitudes y respuestas sobre la marcha. Una puerta de enlace también
48+
> puede proporcionar funciones como recopilar análisis de datos y almacenamiento en caché. La puerta
49+
> de enlace puede proporcionar funcionalidad para soportar autenticación, autorización, seguridad,
50+
> auditoría y cumplimiento normativo.
51+
52+
**Código de ejemplo**
53+
54+
Esta implementación muestra cómo podría verse el patrón API Gateway para un sitio de e-commerce. El
55+
`ApiGateway` hace llamadas a los microservicios Image y Price usando `ImageClientImpl` y`PriceClientImpl`
56+
respectivamente. Los clientes que ven el sitio en un dispositivo de escritorio pueden ver la información
57+
de precio y una imagen de un producto, entonces `ApiGateway` llama a los microservicios y
58+
agrega los datos en el modelo `DesktopProduct`. Sin embargo, los usuarios de dispositivos móviles solo
59+
ven información de precios, no ven una imagen del producto. Para usuarios móviles, `ApiGateway` solo
60+
recupera el precio información, que utiliza para completar el `MobileProduct`.
61+
62+
Aquí está la implementación del microservicio de imagen (Image).
63+
64+
```java
65+
public interface ImageClient {
66+
String getImagePath();
67+
}
68+
69+
public class ImageClientImpl implements ImageClient {
70+
@Override
71+
public String getImagePath() {
72+
var httpClient = HttpClient.newHttpClient();
73+
var httpGet = HttpRequest.newBuilder()
74+
.GET()
75+
.uri(URI.create("http://localhost:50005/image-path"))
76+
.build();
77+
78+
try {
79+
var httpResponse = httpClient.send(httpGet, BodyHandlers.ofString());
80+
return httpResponse.body();
81+
} catch (IOException | InterruptedException e) {
82+
e.printStackTrace();
83+
}
84+
85+
return null;
86+
}
87+
}
88+
```
89+
90+
Aquí está la implementación del microservicio de precio (Price).
91+
92+
```java
93+
public interface PriceClient {
94+
String getPrice();
95+
}
96+
97+
public class PriceClientImpl implements PriceClient {
98+
99+
@Override
100+
public String getPrice() {
101+
var httpClient = HttpClient.newHttpClient();
102+
var httpGet = HttpRequest.newBuilder()
103+
.GET()
104+
.uri(URI.create("http://localhost:50006/price"))
105+
.build();
106+
107+
try {
108+
var httpResponse = httpClient.send(httpGet, BodyHandlers.ofString());
109+
return httpResponse.body();
110+
} catch (IOException | InterruptedException e) {
111+
e.printStackTrace();
112+
}
113+
114+
return null;
115+
}
116+
}
117+
```
118+
119+
Aquí podemos ver cómo API Gateway asigna las solicitudes a los microservicios.
120+
121+
```java
122+
public class ApiGateway {
123+
124+
@Resource
125+
private ImageClient imageClient;
126+
127+
@Resource
128+
private PriceClient priceClient;
129+
130+
@RequestMapping(path = "/desktop", method = RequestMethod.GET)
131+
public DesktopProduct getProductDesktop() {
132+
var desktopProduct = new DesktopProduct();
133+
desktopProduct.setImagePath(imageClient.getImagePath());
134+
desktopProduct.setPrice(priceClient.getPrice());
135+
return desktopProduct;
136+
}
137+
138+
@RequestMapping(path = "/mobile", method = RequestMethod.GET)
139+
public MobileProduct getProductMobile() {
140+
var mobileProduct = new MobileProduct();
141+
mobileProduct.setPrice(priceClient.getPrice());
142+
return mobileProduct;
143+
}
144+
}
145+
```
146+
147+
## Diagrama de clase
148+
149+
![alt text](/api-gateway/etc/api-gateway.png "API Gateway")
150+
151+
## Aplicaciones
152+
153+
Usa el patrón de API Gateway cuando
154+
155+
* Estés usando una arquitectura de microservicios y necesites un único punto de agregación para las llamadas de microservicios.
156+
157+
## Tutoriales
158+
159+
* [Exploring the New Spring Cloud Gateway](https://www.baeldung.com/spring-cloud-gateway)
160+
* [Spring Cloud - Gateway](https://www.tutorialspoint.com/spring_cloud/spring_cloud_gateway.htm)
161+
* [Getting Started With Spring Cloud Gateway](https://dzone.com/articles/getting-started-with-spring-cloud-gateway)
162+
163+
## Créditos
164+
165+
* [microservices.io - API Gateway](http://microservices.io/patterns/apigateway.html)
166+
* [NGINX - Building Microservices: Using an API Gateway](https://www.nginx.com/blog/building-microservices-using-an-api-gateway/)
167+
* [Microservices Patterns: With examples in Java](https://www.amazon.com/gp/product/1617294543/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=javadesignpat-20&creative=9325&linkCode=as2&creativeASIN=1617294543&linkId=ac7b6a57f866ac006a309d9086e8cfbd)
168+
* [Building Microservices: Designing Fine-Grained Systems](https://www.amazon.com/gp/product/1491950358/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=javadesignpat-20&creative=9325&linkCode=as2&creativeASIN=1491950358&linkId=4c95ca9831e05e3f0dadb08841d77bf1)

0 commit comments

Comments
 (0)
Please sign in to comment.