Ответ
Веб-сервис (Web Service) — это стандартизированный способ обеспечения межпрограммного взаимодействия (Interoperability) через сеть (чаще всего интернет) с использованием открытых протоколов и форматов данных.
Ключевые характеристики:
- Сетевое взаимодействие: Использует стандартные веб-протоколы (HTTP/HTTPS, SMTP).
- Стандартизация данных: Обмен структурированными данными в форматах XML, JSON.
- Независимость от платформы: Клиент и сервис могут быть написаны на разных языках и работать на разных ОС.
- Описание интерфейса: Интерфейс сервиса формально описывается (например, WSDL для SOAP, OpenAPI/Swagger для REST).
Основные типы архитектур веб-сервисов:
-
SOAP (Simple Object Access Protocol):
- Строгий стандарт на основе XML.
- Использует WSDL для описания интерфейса.
- Имеет встроенные механизмы безопасности и транзакций (WS-*).
- Чаще применяется в корпоративных системах (банки, госсектор).
-
REST (Representational State Transfer):
- Архитектурный стиль, а не протокол.
- Использует HTTP-методы (GET, POST, PUT, DELETE) для операций с ресурсами.
- Данные обычно в JSON.
- Более простой, гибкий и популярный для публичных API и микросервисов.
Пример RESTful веб-сервиса (Python с Flask):
from flask import Flask, jsonify, request
app = Flask(__name__)
# Простой ресурс "Пользователи"
users = [{'id': 1, 'name': 'Alice'}, {'id': 2, 'name': 'Bob'}]
# Эндпоинт GET /api/users
@app.route('/api/users', methods=['GET'])
def get_users():
return jsonify(users)
# Эндпоинт GET /api/users/<id>
@app.route('/api/users/<int:user_id>', methods=['GET'])
def get_user(user_id):
user = next((u for u in users if u['id'] == user_id), None)
if user is None:
return jsonify({'error': 'User not found'}), 404
return jsonify(user)
if __name__ == '__main__':
app.run(debug=True)
Применение: Интеграция разнородных систем, микросервисная архитектура, мобильные бэкенды, публичные API.