142 lines
4.7 KiB
Markdown
142 lines
4.7 KiB
Markdown
# 🌐 FoxLang FastAPI - Веб-сервер библиотека
|
||
|
||
FoxLang теперь поддерживает создание веб-серверов в стиле FastAPI через библиотеку `net.fox`.
|
||
|
||
## 🚀 Быстрый старт
|
||
|
||
```cpp
|
||
include("src/net.fox");
|
||
|
||
void main() {
|
||
// Запуск сервера на порту 8080
|
||
start_server(8080);
|
||
|
||
// Регистрация маршрутов
|
||
register_get("/", "home_handler");
|
||
register_post("/users", "create_user");
|
||
|
||
print("Server running on http://localhost:8080");
|
||
}
|
||
|
||
// Обработчики
|
||
void home_handler() {
|
||
json_response("{\"message\":\"Hello from FoxLang!\"}");
|
||
}
|
||
|
||
void create_user() {
|
||
text_response("User created successfully");
|
||
}
|
||
|
||
main();
|
||
```
|
||
|
||
## 📋 API Функции
|
||
|
||
### Управление сервером
|
||
|
||
| Функция | Описание | Пример |
|
||
|---------|----------|---------|
|
||
| `start_server(port)` | Запускает HTTP сервер на указанном порту | `start_server(8080);` |
|
||
| `stop_server()` | Останавливает сервер | `stop_server();` |
|
||
|
||
### Регистрация маршрутов
|
||
|
||
| Функция | Описание | Пример |
|
||
|---------|----------|---------|
|
||
| `register_get(path, handler)` | Регистрирует GET маршрут | `register_get("/users", "get_users");` |
|
||
| `register_post(path, handler)` | Регистрирует POST маршрут | `register_post("/users", "create_user");` |
|
||
|
||
### Отправка ответов
|
||
|
||
| Функция | Описание | Пример |
|
||
|---------|----------|---------|
|
||
| `json_response(json)` | Отправляет JSON ответ | `json_response("{\"status\":\"ok\"}");` |
|
||
| `text_response(text)` | Отправляет текстовый ответ | `text_response("Hello World");` |
|
||
|
||
### HTTP клиент
|
||
|
||
| Функция | Описание | Пример |
|
||
|---------|----------|---------|
|
||
| `api_get(base_url, endpoint)` | GET запрос к API | `api_get("http://api.com", "/users");` |
|
||
| `api_post(base_url, endpoint, data)` | POST запрос к API | `api_post("http://api.com", "/users", data);` |
|
||
| `http_get_simple(url)` | Простой GET запрос | `http_get_simple("http://example.com");` |
|
||
| `post_json(url, json)` | POST с JSON данными | `post_json(url, "{\"key\":\"value\"}");` |
|
||
|
||
## 🎯 Примеры использования
|
||
|
||
### Простой API сервер
|
||
|
||
```cpp
|
||
include("src/net.fox");
|
||
|
||
void api_status() {
|
||
json_response("{\"status\":\"healthy\",\"version\":\"1.0\"}");
|
||
}
|
||
|
||
void api_users() {
|
||
json_response("{\"users\":[{\"id\":1,\"name\":\"Alice\"}]}");
|
||
}
|
||
|
||
void create_user() {
|
||
text_response("User created with ID: 123");
|
||
}
|
||
|
||
void main() {
|
||
start_server(3000);
|
||
|
||
register_get("/status", "api_status");
|
||
register_get("/users", "api_users");
|
||
register_post("/users", "create_user");
|
||
|
||
print("🚀 API Server running on http://localhost:3000");
|
||
print("Endpoints:");
|
||
print(" GET /status - Health check");
|
||
print(" GET /users - List users");
|
||
print(" POST /users - Create user");
|
||
}
|
||
|
||
main();
|
||
```
|
||
|
||
### HTTP клиент
|
||
|
||
```cpp
|
||
include("src/net.fox");
|
||
|
||
void test_external_api() {
|
||
// Тест внешнего API
|
||
string response = api_get("https://jsonplaceholder.typicode.com", "/posts/1");
|
||
print("External API response: " + response);
|
||
|
||
// Тест локального API
|
||
string local = api_get("http://localhost:3000", "/status");
|
||
print("Local API response: " + local);
|
||
}
|
||
|
||
test_external_api();
|
||
```
|
||
|
||
## 🛠 Встроенные функции
|
||
|
||
Следующие функции доступны на уровне интерпретатора:
|
||
|
||
- `server_start(port)` - Запуск HTTP сервера
|
||
- `server_stop()` - Остановка сервера
|
||
- `route_get(path, handler)` - Регистрация GET маршрута
|
||
- `route_post(path, handler)` - Регистрация POST маршрута
|
||
- `send_response(data)` - Отправка ответа клиенту
|
||
|
||
## 🔧 Технические детали
|
||
|
||
- Сервер использует Python HTTP сервер под капотом
|
||
- Поддерживает JSON и текстовые ответы
|
||
- Автоматическая обработка CORS заголовков
|
||
- Простая маршрутизация по пути
|
||
|
||
## 📝 Примечания
|
||
|
||
- Сервер запускается в фоновом режиме
|
||
- Для остановки используйте `stop_server()` или Ctrl+C
|
||
- Поддерживаются только GET и POST методы
|
||
- JSON ответы автоматически получают правильный Content-Type
|