133 lines
3.0 KiB
Markdown
133 lines
3.0 KiB
Markdown
# Proyecto Go para consumo de SOAP APIs
|
|
|
|
## Estructura del proyecto
|
|
|
|
```
|
|
soap-api-client/
|
|
├── cmd/
|
|
│ └── api/
|
|
│ └── main.go
|
|
├── configs/
|
|
│ └── config.yaml
|
|
├── internal/
|
|
│ ├── api/
|
|
│ │ ├── handler.go
|
|
│ │ └── router.go
|
|
│ ├── config/
|
|
│ │ └── config.go
|
|
│ ├── database/
|
|
│ │ ├── postgres.go
|
|
│ │ └── models.go
|
|
│ ├── soap/
|
|
│ │ ├── client.go
|
|
│ │ ├── api1/
|
|
│ │ │ ├── client.go
|
|
│ │ │ ├── models.go
|
|
│ │ │ └── transformers.go
|
|
│ │ └── api2/
|
|
│ │ ├── client.go
|
|
│ │ ├── models.go
|
|
│ │ └── transformers.go
|
|
│ └── logger/
|
|
│ └── logger.go
|
|
├── pkg/
|
|
│ ├── errors/
|
|
│ │ └── errors.go
|
|
│ ├── soap/
|
|
│ │ └── soap.go
|
|
│ └── utils/
|
|
│ └── utils.go
|
|
├── go.mod
|
|
└── go.sum
|
|
```
|
|
|
|
## Inicialización del proyecto
|
|
|
|
```bash
|
|
mkdir -p soap-api-client/cmd/api
|
|
mkdir -p soap-api-client/configs
|
|
mkdir -p soap-api-client/internal/api
|
|
mkdir -p soap-api-client/internal/configs
|
|
mkdir -p soap-api-client/internal/database
|
|
mkdir -p soap-api-client/internal/soap/api1
|
|
mkdir -p soap-api-client/internal/soap/api2
|
|
mkdir -p soap-api-client/internal/logger
|
|
mkdir -p soap-api-client/pkg/errors
|
|
mkdir -p soap-api-client/pkg/soap
|
|
mkdir -p soap-api-client/pkg/utils
|
|
cd soap-api-client
|
|
go mod init github.com/yourusername/soap-api-client
|
|
```
|
|
|
|
|
|
## Comandos para la ejecución
|
|
|
|
```bash
|
|
# Iniciar la aplicación
|
|
go run cmd/api/main.go
|
|
|
|
# Construir la aplicación
|
|
go build -o soap-api-client cmd/api/main.go
|
|
|
|
# Ejecutar la aplicación construida
|
|
./soap-api-client
|
|
```
|
|
|
|
## Comandos para la ejecución
|
|
|
|
```bash
|
|
# Iniciar la aplicación
|
|
go run cmd/api/main.go
|
|
|
|
# Construir la aplicación
|
|
go build -o soap-api-client cmd/api/main.go
|
|
|
|
# Ejecutar la aplicación construida
|
|
./soap-api-client
|
|
```
|
|
|
|
## Ejemplos de uso
|
|
|
|
### Ejemplo de solicitud GetData a API1
|
|
|
|
```bash
|
|
curl -X POST http://localhost:9999/api/v1/api1/get-data \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"id": "12345",
|
|
"type": "CUSTOMER",
|
|
"date": "2023-12-01"
|
|
}'
|
|
```
|
|
|
|
### Ejemplo de solicitud de transacción a API2
|
|
|
|
```bash
|
|
curl -X POST http://localhost:9999/api/v1/api2/process-transaction \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"transactionId": "TX789012",
|
|
"accountId": "ACC123",
|
|
"amount": 100.50,
|
|
"currency": "USD",
|
|
"description": "Pago de servicio"
|
|
}'
|
|
```
|
|
|
|
### Ejemplo de obtención de parámetros
|
|
|
|
```bash
|
|
curl -X GET http://localhost:9999/api/v1/parameters
|
|
```
|
|
|
|
### Ejemplo de actualización de parámetro
|
|
|
|
```bash
|
|
curl -X PUT http://localhost:9999/api/v1/parameters/soap.api1.endpoint \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"value": "https://new-api1.example.com/soap",
|
|
"description": "Nuevo endpoint para API 1",
|
|
"active": true
|
|
}'
|
|
``` |