Итак, я разработал веб-сайт-портфолио, который извлекает репозитории и подробную информацию из GitHub и отправляет их на свой сайт. При использовании localhost все работало нормально, но когда я развернул код в Vercel, он показывает ОШИБКУ 401.
Функция для получения репозиториев из API GitHub с использованием аутентификации по ключу на предъявителя:
const axios = require(axios);
const fetchrepositories = async (url,headers,retries = 3)=>{
try{
const response = await axios.get(url , {headers});
return response.data;
}catch(error){
if(retres.error > 3 && error.response?.status === 403){
console.warn(`Rate limit reached. Retrying in 60 seconds...`);
await new Promise(resolve => setTimeout(resolve, 60000)); // Wait 60 seconds
return fetchRepositories(url, headers, retries - 1);
}throw error;
}
};
module.exports = async (req, res) => {
const username = 'coderanik'; // Replace with the GitHub username
const apiUrl = `https://api.github.com/users/${username ... ction=desc`;
const GITHUB_TOKEN = process.env.GITHUB_TOKEN || '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';
try {
const response = await axios.get(apiUrl, {
headers: {
Authorization: `token ${GITHUB_TOKEN}` // Optional for higher rate limits
}
});
// Return only the top 6 repositories
const recentRepos = response.data.slice(0, 6);
res.status(200).json(recentRepos);
} catch (error) {
console.error('Error fetching repositories:', error.message);
res.status(error.response?.status || 500).json({ error: 'Failed to fetch repositories' });
}
};
Функция для отправки репозиториев во внешний интерфейс:
async function fetchRepositories() {
try {
const response = await fetch('/api/repositories'); // Calls the serverless function
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const repos = await response.json();
renderRepositories(repos);
} catch (error) {
document.getElementById('repositories').innerHTML = `
Error fetching repositories: ${error.message}
`;
console.error("Failed to fetch repositories:", error.message);
}
}
function renderRepositories(repos) {
const repoContainer = document.getElementById('repositories');
repoContainer.innerHTML = ''; // Clear the loading message
repos.forEach(repo => {
const repoElement = document.createElement('div');
repoElement.className = 'repo';
repoElement.innerHTML = `
${repo.name}
Created At: ${new Date(repo.created_at).toLocaleString()}
Language: ${repo.language || 'Not specified'}
View on GitHub
`;
repoContainer.appendChild(repoElement);
});
}
fetchRepositories();
Код для запуска сервера:
const express = require('express');
const path = require('path');
const app = express();
// Serve static files
app.use(express.static(path.join(__dirname, 'public')));
// API routes
app.use('/api/repositories', require('./api/repositories'));
// Start server
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
Подробнее здесь: https://stackoverflow.com/questions/793 ... status-401
Ошибка получения репозиториев: ошибка HTTP! статус: 401 ⇐ Html
Программисты Html
-
Anonymous
1737413331
Anonymous
Итак, я разработал веб-сайт-портфолио, который извлекает репозитории и подробную информацию из GitHub и отправляет их на свой сайт. При использовании localhost все работало нормально, но когда я развернул код в Vercel, он показывает ОШИБКУ 401.
Функция для получения репозиториев из API GitHub с использованием аутентификации по ключу на предъявителя:
const axios = require(axios);
const fetchrepositories = async (url,headers,retries = 3)=>{
try{
const response = await axios.get(url , {headers});
return response.data;
}catch(error){
if(retres.error > 3 && error.response?.status === 403){
console.warn(`Rate limit reached. Retrying in 60 seconds...`);
await new Promise(resolve => setTimeout(resolve, 60000)); // Wait 60 seconds
return fetchRepositories(url, headers, retries - 1);
}throw error;
}
};
module.exports = async (req, res) => {
const username = 'coderanik'; // Replace with the GitHub username
const apiUrl = `https://api.github.com/users/${username}/repos?sort=created&direction=desc`;
const GITHUB_TOKEN = process.env.GITHUB_TOKEN || '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';
try {
const response = await axios.get(apiUrl, {
headers: {
Authorization: `token ${GITHUB_TOKEN}` // Optional for higher rate limits
}
});
// Return only the top 6 repositories
const recentRepos = response.data.slice(0, 6);
res.status(200).json(recentRepos);
} catch (error) {
console.error('Error fetching repositories:', error.message);
res.status(error.response?.status || 500).json({ error: 'Failed to fetch repositories' });
}
};
Функция для отправки репозиториев во внешний интерфейс:
async function fetchRepositories() {
try {
const response = await fetch('/api/repositories'); // Calls the serverless function
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const repos = await response.json();
renderRepositories(repos);
} catch (error) {
document.getElementById('repositories').innerHTML = `
Error fetching repositories: ${error.message}
`;
console.error("Failed to fetch repositories:", error.message);
}
}
function renderRepositories(repos) {
const repoContainer = document.getElementById('repositories');
repoContainer.innerHTML = ''; // Clear the loading message
repos.forEach(repo => {
const repoElement = document.createElement('div');
repoElement.className = 'repo';
repoElement.innerHTML = `
${repo.name}
Created At: ${new Date(repo.created_at).toLocaleString()}
Language: ${repo.language || 'Not specified'}
View on GitHub
`;
repoContainer.appendChild(repoElement);
});
}
fetchRepositories();
Код для запуска сервера:
const express = require('express');
const path = require('path');
const app = express();
// Serve static files
app.use(express.static(path.join(__dirname, 'public')));
// API routes
app.use('/api/repositories', require('./api/repositories'));
// Start server
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
Подробнее здесь: [url]https://stackoverflow.com/questions/79324717/error-fetching-repositories-http-error-status-401[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия