Я использую node.js и реализую API, который возвращает ответ в виде Content-Type: application/json вот так:
module.exports = {
api: (req, res) => {
let data = {"data": [1, 2, 3]};
res.status(200).json(data);
}
}
Но нет значка, который можно было бы просмотреть при попытке использовать этот API в браузере. Я вижу другой сайт, который может это сделать.
Как добавить фавиконку в Node.js API с помощью Content-Type: application/json?
у вас может быть общедоступная папка в корне с фавиконкой внутри и использовать app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); перед маршрутами. я проверял работает
@cmgchess применяется ко всем URL-адресам подпути?
да, используя его поверх всех маршрутов, он будет применяться ко всем маршрутам. это то, что вы имели в виду?
у тебя получилось?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете просто добавить свой favicon.ico в корневую папку вашего API, и, возможно, браузер его подхватит. В противном случае нет возможности иметь значок для API (который не следует просматривать в браузере в первую очередь, поэтому никто не заботится о значках для API...)
Вы имеете в виду в одной папке с package.json?
Таким образом, файл должен быть доступен по адресу http://hostname/favicon.ico.
Во-первых, попробуйте поместить файл .ico в общую папку.

Во-вторых, установите имя файла.
Например, если имя файла фавикона file.ico, то
<link rel = "shortcut icon" href = "%PUBLIC_URL%/file.ico"/>
Я надеюсь, что это поможет вам.
Вы предлагаете вставить <link rel= ... /> в необработанный ответ json? Или в заголовках http? Если нет, то где еще?
Вы можете использовать промежуточное ПО, подобное предоставленному в пакете express-favicon, которое будет обслуживать файл favicon.ico перед обработчиками маршрутов API.
например
const favicon = require('express-favicon');
app.use(favicon(__dirname + '/public/favicon.png'));
Не могу поверить, что люди предлагают какой-то пакет для этой простой операции.
Все браузеры запрашивают /favicon.ico поиск фавикона, поэтому вы должны ответить на этот запрос.
app.get('/favicon.ico', (req, res) => {
res.sendFile(path.join(__dirname, 'assets/favicon.ico'))
})
app.get('/api/foo', (req, res) => {
res.json({ foo: 'bar' })
})
Примечание: я использовал фавикон Duckduckgo.
Это на самом деле позволяет вам отправлять фавикон формата png/gif, если вы хотите его использовать.
Создайте файл значка: начните с создания файла значка в формате ICO или PNG. Фавикон обычно представляет собой небольшое изображение, представляющее ваш веб-сайт или API. Вы можете использовать инструмент редактирования изображений, чтобы создать или преобразовать существующее изображение в нужный формат. Сохраните файл фавикона под соответствующим именем, например «favicon.ico» или «favicon.png». Подача файла значка: в вашем API Node.js вам необходимо обслуживать файл значка, когда браузер его запрашивает.
const path = require('path');
app.use('/favicon.ico', express.static(path.join(__dirname, 'path/to/favicon.ico')));
Запрос favicon — это отдельный запрос, который браузер делает всякий раз, когда вы загружаете страницу с вашего веб-сайта (может быть сделан и вне браузера). Он не зависит от других запросов, которые обслуживает ваш сервер (в вашем случае конечная точка API, обслуживающая ответ application/json).
Самый простой способ сделать это — обработать запрос, как и любой другой, в вашем приложении:
app.get('/favicon.ico', (req, res) => {
res.sendFile(
//Path to the favicon file
);
})Однако вам нужно будет установить поведение кэширования, если это необходимо.
Вы также можете использовать пакет express’ serve-favicon, который упрощает настройку кэширования, а также обрабатывает другие вещи (например, установку правильного Content-Type и т. д.).