https://github.com/ifazasalcedo/web-api-restfull-soap
ApiRest + WebService SOAP para consulta ruc contribuyentes SET Paraguay para apoyo a sistemas independientes
https://github.com/ifazasalcedo/web-api-restfull-soap
api-rest java17 soap-web-services springboot
Last synced: 6 months ago
JSON representation
ApiRest + WebService SOAP para consulta ruc contribuyentes SET Paraguay para apoyo a sistemas independientes
- Host: GitHub
- URL: https://github.com/ifazasalcedo/web-api-restfull-soap
- Owner: ifazaSalcedo
- Created: 2024-11-02T10:45:08.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-11-14T12:18:37.000Z (over 1 year ago)
- Last Synced: 2025-03-24T10:45:46.038Z (over 1 year ago)
- Topics: api-rest, java17, soap-web-services, springboot
- Language: Java
- Homepage:
- Size: 46.9 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# API de Contribuyentes
Este proyecto ofrece una API REST y un servicio SOAP para la gestión de contribuyentes. Los servicios permiten obtener un listado de contribuyentes y consultar datos de contribuyentes específicos, utilizando una estructura en Java con Spring Boot.
## Estructura del Proyecto
- `Person` - Entidad que representa a un contribuyente, almacenada en la base de datos.
- `PersonControllerRest` - Controlador REST que expone endpoints HTTP para listar y buscar contribuyentes.
- `PersonServicesSoap` - Endpoint SOAP que ofrece operaciones para listar y buscar contribuyentes por RUC.
- `PersonServicesImplement` - Servicio de negocio que contiene la lógica de acceso a los datos.
## Tecnologías
- Java 17
- Spring Boot 3.3.5
- API REST con Spring MVC
- Servicio SOAP con Spring Web Services
- MySQL como base de datos
## Entidad `Person`
La entidad `Person` representa la información del contribuyente y contiene los siguientes campos:
- `personId` (Long): Identificador único de la persona.
- `name` (String): Nombre del contribuyente.
- `lastname` (String): Apellido del contribuyente.
- `ruc` (String): Número de RUC.
- `dv` (int): Dígito verificador del RUC.
- `rucFormer` (String): RUC anterior.
- `state` (Enum `State`): Estado del contribuyente (por ejemplo: ACTIVO, INACTIVO).
## API REST
La API REST permite acceder a los datos de los contribuyentes mediante los siguientes endpoints.
### Endpoints
- **Listar contribuyentes**
`GET /rest/contribuyentes-list`
Retorna una lista de contribuyentes paginada.
**Parámetros**:
- `page` (int, opcional): Número de página. Valor por defecto: 0.
- `size` (int, opcional): Tamaño de la página. Valor por defecto: 60.
- **Buscar contribuyentes por nombre**
`GET /rest/contribuyentes-nombre`
Retorna una lista de contribuyentes cuyo nombre contiene el filtro especificado, paginada.
**Parámetros**:
- `filter` (String): Filtro de búsqueda por nombre.
- `page` (int, opcional): Número de página. Valor por defecto: 0.
- `size` (int, opcional): Tamaño de la página. Valor por defecto: 60.
- **Buscar contribuyente por RUC**
`GET /rest/contribuyente-ruc`
Retorna los datos de un contribuyente según el número de RUC especificado.
**Parámetros**:
- `filter` (String): RUC del contribuyente a buscar.
## Servicio SOAP
El servicio SOAP permite realizar consultas de contribuyentes, incluyendo obtener un listado paginado y consultar por RUC.
### Namespace
Todos los mensajes SOAP están dentro del namespace:
`http://www.appt.com/set/web_api/soap/contribuyente`
### Operaciones
- **Obtener contribuyente por RUC**
`getPersonRucRequest`
Retorna los datos del contribuyente con el RUC proporcionado.
**Request**:
- `ruc` (String): RUC del contribuyente.
**Response**:
- `PersonDto`: DTO del contribuyente con los detalles del RUC.
- **Listar contribuyentes**
`getPersonsListRequest`
Retorna una lista paginada de contribuyentes.
**Request**:
- `page` (int): Número de página.
- `size` (int): Tamaño de la página.
**Response**:
- `GetPersonsListResponse`: Contiene la lista de contribuyentes y detalles de la paginación (total de páginas, elementos totales, página actual, tamaño de página).
## Configuración y Despliegue
1. Clona el repositorio y navega a la carpeta del proyecto.
2. Configura la conexión a la base de datos en `application.properties`.
3. Ejecuta el proyecto con:
```bash
./mvnw spring-boot:run
## Configuración y Despliegue
**Uso**
- La API REST estará disponible en http://localhost:8080/rest/ y el servicio SOAP en http://localhost:8080/ws.
- Este servicio es independiente y puede utilizarse como un módulo de apoyo para sistemas de facturación, proporcionando consultas a datos de contribuyentes. Ideal para aplicaciones que requieren funcionalidades de búsqueda rápida y acceso a datos de identificación tributaria.
## Recomendación de Despliegue
### Elección entre SOAP y REST
Para simplificar la arquitectura y optimizar el rendimiento, recomendamos desplegar solo uno de los dos tipos de servicios (SOAP o REST), dependiendo de los requisitos del sistema que consuma esta API:
- **SOAP** es adecuado para sistemas empresariales o entornos que requieren una estructura estricta de mensajes y soporte transaccional.
- **REST** es más ligero y es preferido para aplicaciones web y móviles, donde se necesita comunicación rápida y menos estructurada.
### Cómo Desactivar un Tipo de Servicio
Para desactivar un tipo de servicio (REST o SOAP), puedes utilizar la configuración de Spring Boot en `application.properties` o eliminar la clase de controlador correspondiente.
#### Desactivar REST
1. En el archivo `application.properties`, agrega la siguiente línea para desactivar el escaneo de controladores REST:
```properties
spring.main.web-application-type=NONE
## Licencia y Modificaciones
Este proyecto es de **uso libre**, lo que significa que puedes clonarlo, modificarlo y adaptarlo según tus necesidades. La estructura, los servicios y las configuraciones pueden personalizarse para ajustarse a los requisitos específicos de cualquier sistema que desees desarrollar.
Te animamos a contribuir con mejoras o a adaptar la API para integrarla en tus propios sistemas. Las modificaciones pueden incluir mejoras en el rendimiento, ampliación de servicios, adaptación a nuevas arquitecturas de seguridad, o ajustes para una mejor integración en tu infraestructura.
## Configuración de Seguridad con API Key
Para mejorar la seguridad de la API, se está trabajando en una **configuración de autenticación mediante API Key**. Esta implementación se encuentra en la rama `desarrollo-security`. Puedes acceder a esta rama para ver la configuración y pruebas actuales de seguridad, así como para contribuir o adaptar la configuración de seguridad a tu propio entorno.
### Instrucciones para trabajar en la rama de seguridad
1. Clona el repositorio y cambia a la rama `desarrollo-apy-key-security`:
```bash
git clone
cd
git checkout desarrollo-apy-key-security