HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Общие вопросы программирования
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 05.05.2025, 02:37
Solution
Постоянный
Регистрация: 06.09.2017
Сообщений: 505
С нами: 4571066

Репутация: 251


По умолчанию

Микросервис для получения информации по IP адресу, так как участились баны доменов из-за наличия файлов клиента на сайте, появилась нужда отображать их или нет исходя из локации.

# Сервис поиска GeoIP

Go-приложение, предоставляющее географическую информацию для IP-адресов с использованием базы данных MaxMind GeoIP.

## Структура проекта

Проект следует принципам чистой архитектуры со следующей структурой:

```

check-ip/

├── cmd/

│ └── server/

│ └── main.go # Точка входа в приложение

├── docs/

│ ├── openapi.yaml # OpenAPI спецификация API

│ └── README.md # Документация по использованию API

├── internal/

│ ├── config/

│ │ └── config.go # Конфигурация приложения

│ ├── domain/

│ │ └── model.go # Доменные модели

│ ├── repository/

│ │ ├── geoip_repository.go # Слой доступа к данным

│ │ └── geoip_repository_test.go # Тесты репозитория

│ ├── service/

│ │ ├── geoip_service.go # Слой бизнес-логики

│ │ └── geoip_service_test.go # Тесты сервиса

│ └── handler/

│ ├── geoip_handler.go # HTTP-обработчики

│ └── geoip_handler_test.go # Тесты обработчиков

├── go.mod

├── go.sum

└── README.md

```

## Чистая архитектура

Этот проект следует принципам чистой архитектуры:

1. **Доменный слой**: Содержит основные бизнес-модели и правила

2. **Слой репозитория**: Обрабатывает доступ к данным и хранение

3. **Сервисный слой**: Реализует бизнес-логику и варианты использования

4. **Слой обработчиков**: Управляет HTTP-запросами и ответами

5. **Конфигурация**: Централизует конфигурацию приложения

## Запуск приложения

1. Соберите и запустите приложение:

```bash

go build -o geoip-server ./cmd/server

./geoip-server

```

Сервер запустится на порту 8080 по умолчанию.

Примечание: Если у вас установлена утилита `geoipupdate`, приложение будет использовать её для обновления базы данных. В противном случае база данных будет загружена напрямую с публичного источника.

## Автоматическое обновление базы данных

Приложение имеет следующие функции для работы с базой данных GeoIP:

1. **Автоматическая загрузка при запуске**: Если база данных не существует, приложение автоматически загрузит её при запуске.

2. **Ежедневное обновление**: База данных автоматически обновляется каждые 24 часа.

3. **Немедленное обновление**: При запуске приложения выполняется обновление базы данных.

## API Endpoints

### GET /api/v1/geo-ip

Возвращает географическую информацию для IP-адреса.

**Параметры запроса**:

- `ip`: IP-адрес для поиска (необязательно, по умолчанию используется IP клиента)

**Пример ответа**:

```json

{

"ip": "8.8.8.8",

"country": "US",

"region": "California",

"city": "Mountain View",

"latitude": 37.386,

"longitude": -122.0838

}

```

## Документация API

Полная документация API доступна в формате OpenAPI 3.0 в директории `docs`:

- [OpenAPI спецификация](./docs/openapi.yaml) - полное описание API в формате YAML

- [Документация по использованию API](./docs/README.md) - инструкции по использованию документации

Вы можете использовать эту спецификацию с инструментами, такими как Swagger UI или Redoc, для интерактивного просмотра и тестирования API.

## Запуск тестов

Запустите все тесты с помощью:

```bash

go test ./...

```

## Зависимости

- [github.com/oschwald/geoip2-golang](https://github.com/oschwald/geoip2-golang): Go-библиотека для чтения баз данных MaxMind GeoIP2
 
Ответить с цитированием

  #2  
Старый 05.05.2025, 02:51
LightShock
Постоянный
Регистрация: 16.07.2021
Сообщений: 450
С нами: 2541480

Репутация: 87
По умолчанию

Ну, в целом то, промт в chat.XXX.com могли бы и сами написать...
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.