- PVSM.RU - https://www.pvsm.ru -
Полагаю, некоторые из вас знают, что у hh.ru есть открытый API (мы рассказывали о нем тут [1] и тут [2]), который используем не только мы, но и сторонние разработчики. С его помощью, например, можно очень детально анализировать рынок на больших объемах актуальных данных.
Я задумал серию из двух статей: в этой покажу, как можно быстро и просто начать использовать API, а в следующей сделаю небольшой проект, рекомендующий актуальные вакансии по вашему резюме.
Сначала вкратце о том, что вообще есть в нашем API, где и как его используют.
Чтобы быстро получить представление о возможностях API, обратите внимание, например, на наши мобильные приложения для соискателя (Android [3], iOS [4]) и работодателя (Android [5], iOS [6]). Они работают через API.
Например, внешние разработчики могут получить все актуальные и архивные вакансии с зарплатами и остальными деталями. А это почти 400 тыс. живых вакансий и еще черт знает сколько архивных. Желающие проанализировать рынок, поиграться с большим количеством реальных данных — вам сюда.
Через API работает поиск по вакансиям. Доступны различные справочники: регионы, используемые на сайте, специализации работников, отрасли компаний, станции метро и прочее. Для авторизованных пользователей доступна работа с вашими вакансиями или резюме: в зависимости от того, работодатель вы или соискатель. Для работодателей есть поиск по вакансиям и возможность работы с ними.
За более детальной информацией обращайтесь к нашей документации [7].
Всё взаимодействие происходит про протоколу HTTPS в лучших традициях REST. Получаем что-то — делаем GET-запрос, удаляем — DELETE, создаем — POST, редактируем — PUT. Обмен данными производится в формате JSON. Некоторые операции доступны без авторизации, другие — нет. Авторизованный пользователь может выступать в роли работодателя или соискателя. От этого зависит, какие методы ему доступны. Для авторизации используется протокол OAuth2 (о том, как это сделать, я объясню на пальцах ниже). Работать можно с данными любого из наших сайтов [8]. Детали в разделе «Общая информация [9]» документации.
Для того чтобы начать работать с данными, доступными без авторизации, вам ничего не потребуется. Смотрим в документации [10], какие методы можно использовать, делаем запрос — получаем данные. Например, если хочется посмотреть вакансии
curl -k -H 'User-Agent: api-test-agent' 'https://api.hh.ru/vacancies'
Следует обратить внимание, что нужно передавать заголовок User-Agent. Без него работать не будет.
Для поиска вакансий можно задавать разные параметры [11].
Так, например, можно поискать вакансию по ключевому слову Java в Москве у станции метро «Алексеевская»
curl -k -H 'User-Agent: api-test-agent' 'https://api.hh.ru/vacancies?text=java&area=1&metro=6.8'
Значения area [12] и metro [13] можно получить из справочников.
Как уже было сказано, для авторизации используется протокол OAuth2.
Чтобы делать что-то из-под пользователя, для него требуется получить токен и передавать этот токен в заголовке при запросе. Для получения токена для своего пользователя достаточно его сгенерировать в интерфейсе API. Заходим в личный кабинет на https://dev.hh.ru [14] и нажимаем на кнопку «Сгенерировать токен».
Чтобы остальные пользователи могли выполнять действия в вашем приложении, это приложение необходимо сначала завести в личном кабинете. Добавляем приложение, указав redirect URI. На этот адрес пользователь будет автоматически возвращаться после авторизации.
После добавления приложения, ему будут присвоены Client ID и Client Secret.
В своем приложении вы размещаете ссылку на авторизацию, указывая в ней Client ID приложения, например,
https://hh.ru/oauth/authorize?response_type=code&client_id=LOTHHN3BSET0I7IQNF3N5I0362AE1D14I6M74CAIQ5H49F7MT4PLMTVV7JTOA6QA
Когда пользователь переходит по этой ссылке, для него на нашей стороне генерируется специальный код. И наш сайт перенаправляет пользователя обратно в ваше приложение (по redirect URI, который был указан при регистрации приложения), добавив к адресу вашего приложения параметр, содержащий код. Например:
http://yourapphost/?code=J2CO4TM7PK58NNVFCJSLPMML15IKQERD5CT2L8VGK82Q333ILAKQ28BPURIO1LG8
После этого вы вытаскиваете из этого адреса code и используете его для получения токена, сделав POST-запрос в API, передав code, client_id и client_secret.
curl -k -X POST -H 'User-Agent: api-test-agent' -d 'grant_type=authorization_code&client_id=LOTHHN3BSET0I7IQNF3N5I0362AE1D14I6M74CAIQ5H49F7MT4PLMTVV7JTOA6QA&client_secret=JS33UVG3J6JANNEATPND57BME23BKDCPP2UH1NB0C21HUMNGS5T71AVP6P24E0EI&code=J2CO4TM7PK58NNVFCJSLPMML15IKQERD5CT2L8VGK82Q333ILAKQ28BPURIO1LG8' https://hh.ru/oauth/token
В ответ вы получите json, содержащий токен (поле access_token):
{
"access_token": "VTEJ4PDD8R4MHEO7LTQM6RLEGJ1O8B1F79TGF45LIDQD11K50HMMBETB47BBCMQ1",
"token_type": "bearer",
"expires_in": 1209599,
"refresh_token": "OARLQNLT6JSMDI88CO5QIP35OOSQUTOO9IQNT20MOMAHE4H8SGPM7LQUAP8EO1G6"
}
Это всё. Далее, выполняя запросы в API с заголовком Authorization: Bearer your_access_token, вы будете выполнять действия из-под пользователя. Чтобы на каждый запрос не выполнять авторизацию, сохраняйте у себя access_token.
Вот, например, запрос для получения списка резюме текущего пользователя:
curl -k -H 'Authorization: Bearer VTEJ4PDD8R4MHEO7LTQM6RLEGJ1O8B1F79TGF45LIDQD11K50HMMBETB21BBCMQ1' -H 'User-Agent: api-test-agent' https://api.hh.ru/resumes/mine
Следует учесть, что у токена есть срок жизни, указанный в поле expires_in, после истечения которого токен надо обновить [15].
API постоянно растет, в нем реализуется всё больше новых возможностей. Если вам сильно не хватает какого-то функционала, есть пожелания или вы нашли ошибку, то напишите нам в issues [16] на гитхабе.
Автор: HeadHunter
Источник [17]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/133679
Ссылки в тексте:
[1] тут: https://habrahabr.ru/company/hh/blog/201202/
[2] тут: https://habrahabr.ru/company/hh/blog/186994/
[3] Android: https://play.google.com/store/apps/details?id=ru.hh.android
[4] iOS: https://itunes.apple.com/ru/app/headhunter/id502838820?mt=8
[5] Android: https://play.google.com/store/apps/details?id=ru.hh.employer.android
[6] iOS: https://itunes.apple.com/ru/app/hr-mobajl-poisk-rezume-i-sotrudnikov/id1017734199?mt=8
[7] документации: https://github.com/hhru/api
[8] сайтов: https://github.com/hhru/api/blob/master/docs/hosts.md
[9] Общая информация: https://github.com/hhru/api/blob/master/docs/general.md
[10] документации: https://github.com/hhru/api/blob/master/README.md#%D0%A0%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B
[11] параметры: https://github.com/hhru/api/blob/master/docs/vacancies.md#search
[12] area: https://github.com/hhru/api/blob/master/docs/areas.md
[13] metro: https://github.com/hhru/api/blob/master/docs/metro.md
[14] https://dev.hh.ru: https://dev.hh.ru/
[15] обновить: https://github.com/hhru/api/blob/master/docs/authorization.md#%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BF%D0%B0%D1%80%D1%8B-access-%D0%B8-refresh-%D1%82%D0%BE%D0%BA%D0%B5%D0%BD%D0%BE%D0%B2
[16] issues: https://github.com/hhru/api/issues
[17] Источник: https://habrahabr.ru/post/303168/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.