Как создать функцию, которая будет работать для различных ситуаций?

Как можно улучшить универсальную функцию для отправки запросов на сервер и получения ответов, которая поддерживает как GET, так и POST запросы с возможностью обработки JSON и текстовых ответов, а также проверку ошибки 401 из-за токена? В настоящий момент функция определена следующим образом: 

```javascript
async function sendRequest(url, method = 'GET', body = null) { 
    const options = { 
        method: method, 
        headers: { 
            'Content-Type': 'application/json', 
            'Authorization': 'Bearer ' + ACCESS_TOKEN, 
            'Origin': '...', 
            'User-Agent': '...' 
        }, 
        body: body ? JSON.stringify(body) : null 
    }; 
    const response = await fetch(url, options); 
}
```
  • 25 августа 2024 г. 18:34
Ответы на вопрос 1
Для улучшения данной универсальной функции для отправки запросов на сервер и получения ответов, можно добавить следующие функциональности:

1. Обработка ответов в формате JSON или текстовом формате:
```javascript
async function sendRequest(url, method = 'GET', body = null, responseType = 'json') { 
    const options = { 
        method: method, 
        headers: { 
            'Content-Type': 'application/json', 
            'Authorization': 'Bearer ' + ACCESS_TOKEN, 
            'Origin': '...', 
            'User-Agent': '...' 
        }, 
        body: body ? JSON.stringify(body) : null 
    }; 
    const response = await fetch(url, options); 
    if(responseType === 'json') {
        return await response.json();
    } else {
        return await response.text();
    }
}
```

2. Добавление обработки ошибки 401 (Unauthorized) из-за недействительного токена:
```javascript
async function sendRequest(url, method = 'GET', body = null, responseType = 'json') { 
    const options = { 
        method: method, 
        headers: { 
            'Content-Type': 'application/json', 
            'Authorization': 'Bearer ' + ACCESS_TOKEN, 
            'Origin': '...', 
            'User-Agent': '...' 
        }, 
        body: body ? JSON.stringify(body) : null 
    }; 
    const response = await fetch(url, options); 
    if(response.status === 401) {
        // Handle error in case of 401 Unauthorized
        throw new Error('Unauthorized: Token is expired or invalid');
    }
    if(responseType === 'json') {
        return await response.json();
    } else {
        return await response.text();
    }
}
```

Теперь функция sendRequest поддерживает отправку GET и POST запросов с возможностью обработки JSON и текстовых ответов, а также проверку ошибки 401 из-за недействительного токена.
Похожие вопросы