Я создал инструмент, который позволяет мне искать определения кодов состояния HTTP в автономном режиме и прямо из командной строки.
Я хочу отдать должное https://httpstatuses.com/ за исключительно полезный ресурс, доступный без рекламы.
Настраивать
Установите модуль npm глобально
npm install -g stts
Теперь вы должны иметь возможность использовать его, набрав stts
, а затем любой код HTTP, для которого вы хотите быстро определить. Пример:
stts 301
Делаем мой первый модуль npm
Я люблю создавать небольшие инструменты, которые облегчают жизнь, поэтому я сделал этот простой автономный справочный инструмент. На самом деле я использую его чаще, чем ожидал, и это на удивление здорово. Кроме того, мне нужно было выполнить элементарный парсинг веб-страниц.
Бизнес-логика довольно проста
Прежде всего, вот ссылка на проект Github: https://github.com/nkhil/stts.
Весь мой код находится в папке src. Фактическая логика очень проста - у меня есть объект (ищите data.json, если вы просматриваете репозиторий github) с кодами состояния и их описаниями в виде пар ключ-значение. У меня также есть массив всех кодов состояния HTTP. Затем нужно просто перебирать массив кодов состояния, и если этот код состояния существует как ключ, я выхожу из описания в консоли.
Для стилизации / форматирования я использую несколько внешних зависимостей, таких как мел и перенос слов.
Заставить его работать из командной строки
После того, как я опубликовал модуль, заставить его работать из терминала было немного сложно, но благодаря этой статье он стал тривиальным - вам нужно добавить символ shebang поверх файла index.js.
#!/usr/bin/env node
и сопоставьте сценарий с командой в package.json
"bin": {
"stts": "./src/index.js"
}
Публикация пакета npm проста, и вы найдете множество ресурсов для этого.
Веб-сканирование 101
Я ни в коем случае не являюсь экспертом в области парсинга веб-страниц, кто-то на работе (спасибо, Джош!) Предложил Cheerio в качестве предпочтительного пакета.
Я начинаю с массива всех существующих кодов состояния, затем перебираю каждый из них, чтобы выполнить операцию.
Например:
[200, 201, 202, 301, 302, 400].forEach(statusCode => {
// Do stuff with each status code.
})
Вот мои логические шаги:
- Свяжите каждый код статуса с https://httpstatuses.com/ (например, https://httpstatuses.com/200)
- Сделайте запрос GET, чтобы вернуть весь HTML с этой страницы
- Найдите нужный текст с помощью селекторов Cheerio
Примечание. Вот код парсинга веб-страниц.
Это форма объекта результата:
{
"100": {
"headline": "100 Continue",
"summary": "The initial part of a request has been received and has not yet been rejected by the server. The server intends to send a final response after the request has been fully received and acted upon."
},
"101": {
"headline": "101 Switching Protocols",
"summary": "The server understands and is willing to comply with the client's request, via the Upgrade header field1, for a change in the application protocol being used on this connection."
},
"102": {
"headline": "102 Processing",
"summary": "An interim response used to inform the client that the server has accepted the complete request, but has not yet completed it."
},
...
}
Вот и все, как только у меня есть данные, мне больше не нужно удалять их (к счастью, коды состояния HTTP не меняются раз в две недели), и я могу использовать их в качестве справочного ресурса.