-
Notifications
You must be signed in to change notification settings - Fork 6
API
/auth - аутентификация пользователя - POST
/register - регистрация пользователя - POST
/status - информация о пользователе - GET
/users - список пользователей - GET
/user/<id> - пользователь, где <id> это номер в базе (Int) - GET, PUT, DELETE
/user/changepass - смена пароля пользователя - PUT
/user/restore - восстановление пароля пользователя - POST
/sites - список всех сайтов - GET
/site/{<id>|<name>} - один из сайтов, где <id> это номер в базе (Int), <name> его название (Str) - GET, POST, PUT, DELETE
/persons - список всех личностей - GET
/person/{<id>|<name>} - личность, где <id> это номер в базе (Int), где <name> имя/фамилия (Str) - GET, POST, PUT, DELETE
/keywords - список ключевых слов поиска - GET
/keyword/{<id>|<name>} - ключевое слово, где это номер в базе (Int), текстовое значение (Str) - GET, POST, PUT, DELETE
/base_statistic - общая статистика краулера, отображает количество скачанных страниц, не распарсенных страниц, распарсенных - GET
/base_statistic/{<id>} - статистика краулера по <id> сайта - GET
/rank_statistic - общая статистика краулера, отображает количество найденных совпадений для персон и для всех сайтов - GET
/rank_statistic/{<id>} - статистика краулера по <id> сайта - GET
/rank_statistic/{<date>} - статистика краулера по <date>, верный формат <%Y-%m-%d> - GET
/rank_statistic/{<id>}/{<date>} - статистика краулера по <id> и <date> - GET
/rank_statistic/{<date1>}/{<date2>} - статистика краулера за период от <date1> по <date2>- GET
/rank_statistic/{<id>}/{<date1>}/{<date2>} - статистика краулера по <id> и за период от <date1> по <date2>- GET
ресурс: /auth
Поддерживаемые запросы: POST
Возвращаемые коды: 200, 400
Параметры: Content-Type: application/json {"username":"", "password":""}
Используется JWT авторизация.
Для получения ключа необходимо отправить POST запрос:
POST http://host:5000/auth
Content-Type: application/json {"username":"someUser", "password":"secretWord"}
в ответе будет ключ - token::
HTTP/1.0 200 OK
Content-Length: 00
Content-Type: application/json
Date: Thu, 1 Jan 1970 00:00:00 GMT
Server: SomeWebServer/0.0.0
{
"email": "test@email",
"id": 7,
"name": "testUser",
"role": 3,
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0ODY4MjY1ODUsImlhdCI6MTQ4NjgxOTM4NSwibmJmIjoxNDg2ODE5Mzg1LCJpZGVudGl0eSI6N30.C5wHMGHS5zsoiY_4md3tUd_7qiJ1oB6Pnh22mxEOy6U",
"token_exp": "2017-02-11 15:23:05 GMT"
}
его необходимо передавать в заголовке запросов в виде ("JWT_пробел_ключ"):
Authorization:"JWT eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0ODY4MjY1ODUsImlhdCI6MTQ4NjgxOTM4NSwibmJmIjoxNDg2ODE5Mzg1LCJpZGVudGl0eSI6N30.C5wHMGHS5zsoiY_4md3tUd_7qiJ1oB6Pnh22mxEOy6U"
ресурс: /register
Поддерживаемые запросы: POST
Возвращаемые коды: 200, 400, 403
Параметры: Content-Type: application/json {"username":"", "password":"", "email":"", "name":""} - обязательны для передачи. Роль и администратор будут подставлены автоматически.
пример:
POST http://host:5000/register
Content-Type: application/json {"name":"Имя", "email":"mail@me.com", "username":"name" ,"password":"secret"}
ответ:
HTTP/1.0 201 CREATED
Content-Length: 00
Content-Type: application/json
Date: Thu, 1 Jan 1970 00:00:00 GMT
Server: SomeWebServer/0.0.0
{
"email": "mail@me.com",
"id": 2,
"name": "Имя",
"role": 2,
"username": "name"
}
ресурс: /user/<id>
Поддерживаемые запросы: PUT
Возвращаемые коды: 200, 201, 400, 403, 404
Параметры: Content-Type: application/json {"username":"", "password":"", "email":"", "name":""} - обязательны для передачи, а вот их значения нет. В случае пустого значения, поле изменено не будет.
пример:
PUT http://host:5000/user/2
Content-Type: application/json {"name":"имя", "email":"", "username":"" ,"password":""}
ответ:
HTTP/1.0 200 OK
Content-Length: 00
Content-Type: application/json
Date: Thu, 1 Jan 1970 00:00:00 GMT
Server: SomeWebServer/0.0.0
{
"email": "mail@me.com",
"id": 2,
"name": "имя",
"role": 2,
"username": "name"
}
ресурс: /user/changepass
Поддерживаемые запросы: PUT
Возвращаемые коды: 200, 400
Параметры: Content-Type: application/json {"password":"", "new_password":""}
пример:
PUT http://host:5000/user/changepass
Content-Type: application/json {"password":"old_one", "new_password":"new_one"}
ответ:
HTTP/1.0 200 OK
Content-Length: 00
Content-Type: application/json
Date: Thu, 1 Jan 1970 00:00:00 GMT
Server: SomeWebServer/0.0.0
{
"message": "Password changed!"
}
ресурс: /user/restore
Поддерживаемые запросы: POST
Возвращаемые коды: 200, 400, 404
Параметры: Content-Type: application/json {"email":""}
пример:
POST http://host:5000/user/restore
Content-Type: application/json {"email":"some@scarymail"}
ответ:
HTTP/1.0 200 OK
Content-Length: 00
Content-Type: application/json
Date: Thu, 1 Jan 1970 00:00:00 GMT
Server: SomeWebServer/0.0.0
{
"message": "We send an email to you."
}
ресурс: /sites
Поддерживаемые запросы: GET
Возвращаемые коды: 200
Параметры: нет
пример:
GET http://host:5000/sites
ответ:
HTTP/1.0 200 OK
Content-Length: 00
Content-Type: application/json
Date: Thu, 1 Jan 1970 00:00:00 GMT
Server: SomeWebServer/0.0.0
{
"sites": [
{
"admin_id": 1,
"id": 1,
"name": "lenta.ru"
},
{
"admin_id": 1,
"id": 2,
"name": "rbk.ru"
}
]
}
ресурс: /site, /site/<id>, /site/<name>
Поддерживаемые запросы: GET, POST, PUT, DELETE
Возвращаемые коды: 200, 201, 400, 403, 404
Параметры: Content-Type: application/json {"name":""}
получить информацию:
по ID:
GET http://host:5000/site/1
по имени:
GET http://host:5000/site/lenta.ru
ответ:
HTTP/1.0 200 OK
Content-Length: 00
Content-Type: application/json
Date: Thu, 1 Jan 1970 00:00:00 GMT
Server: SomeWebServer/0.0.0
{
"admin_id": 1,
"id": 1,
"name": "lenta.ru"
}
создание:
PUT http://host:5000/site/0
Content-Type: application/json {"name":"site.ru"}
или:
POST http://host:5000/site
Content-Type: application/json {"name":"site.ru"}
ответ:
HTTP/1.0 201 CREATED
Content-Length: 00
Content-Type: application/json
Date: Thu, 1 Jan 1970 00:00:00 GMT
Server: SomeWebServer/0.0.0
{
"admin_id": 1,
"id": 1,
"name": "lenta.ru"
}
изменение:
PUT http://host:5000/site/1
Content-Type: application/json {"name":"site.ru"}
ответ:
HTTP/1.0 200 OK
Content-Length: 00
Content-Type: application/json
Date: Thu, 1 Jan 1970 00:00:00 GMT
Server: SomeWebServer/0.0.0
{
"admin_id": 1,
"id": 1,
"name": "site.ru"
}
удаление:
DELETE http://host:5000/site/1
ответ:
HTTP/1.0 200 OK
Content-Length: 00
Content-Type: application/json
Date: Thu, 1 Jan 1970 00:00:00 GMT
Server: SomeWebServer/0.0.0
{
"message": "Site deleted."
}
Если в базе не найден такой объект:
HTTP/1.0 404 NOT FOUND
Content-Length: 00
Content-Type: application/json
Date: Thu, 1 Jan 1970 00:00:00 GMT
Server: SomeWebServer/0.0.0
{
"message": "Site not found."
}
ресурс: /persons
Поддерживаемые запросы: GET
Возвращаемые коды: 200
Параметры: нет
пример:
GET http://host:5000/persons
ответ:
HTTP/1.0 200 OK
Content-Length: 00
Content-Type: application/json
Date: Thu, 1 Jan 1970 00:00:00 GMT
Server: SomeWebServer/0.0.0
{
"persons": [
{
"admin_id": 2,
"id": 1,
"keywords": [
{
"id": 1,
"name": "Путину",
"person_id": 1
},
],
"name": "Путин"
},
]
}
ресурс: /person, /person/<id>, /person/<name>
Поддерживаемые запросы: GET, POST, PUT, DELETE
Возвращаемые коды: 200, 201, 400, 403, 404
Параметры: Content-Type: application/json {"name":""}
Информация об объекте:
GET http://host:5000/person/1
или:
GET http://host:5000/person/Фамилия
ответ:
HTTP/1.0 200 OK
Content-Length: 00
Content-Type: application/json
Date: Thu, 1 Jan 1970 00:00:00 GMT
Server: SomeWebServer/0.0.0
{
"admin_id": 1,
"id": 2,
"keywords": []
"name": "Фамилия"
}
Создание объекта:
POST http://host:5000/person
Content-Type: application/json {"name":"Имя"}
или:
PUT http://host:5000/person/0
Content-Type: application/json {"name":"Имя"}
ответ:
HTTP/1.0 201 CREATED
Content-Length: 00
Content-Type: application/json
Date: Thu, 1 Jan 1970 00:00:00 GMT
Server: SomeWebServer/0.0.0
{
"admin_id": 1,
"id": 2,
"keywords": []
"name": "Имя"
}
В случае если объект уже существует:
HTTP/1.0 400 BAD REQUEST
Content-Length: 00
Content-Type: application/json
Date: Thu, 1 Jan 1970 00:00:00 GMT
Server: SomeWebServer/0.0.0
{
"message": "A person with name 'Имя' already exists."
}
редактирование:
PUT http://host:5000/person/2
Content-Type: application/json {"name":"ИмяДлинное"}
ответ:
HTTP/1.0 200 OK
Content-Length: 00
Content-Type: application/json
Date: Thu, 1 Jan 1970 00:00:00 GMT
Server: SomeWebServer/0.0.0
{
"admin_id": 1,
"id": 2,
"keywords": []
"name": "ИмяДлинное"
}
удаление:
DELETE http://host:5000/person/2
ответ:
HTTP/1.0 200 OK
Content-Length: 00
Content-Type: application/json
Date: Thu, 1 Jan 1970 00:00:00 GMT
Server: SomeWebServer/0.0.0
{
"message": "Person deleted"
}
ресурс: /keywords
Поддерживаемые запросы: GET
Возвращаемые коды: 200
Параметры: нет
пример:
GET http://host:5000/keywords
ответ:
HTTP/1.0 200 OK
Content-Length: 00
Content-Type: application/json
Date: Thu, 1 Jan 1970 00:00:00 GMT
Server: SomeWebServer/0.0.0
{
"keywords": [
{
"id": 1,
"name": "Путину",
"person_id": 1
},
{
"id": 2,
"name": "Путиным",
"person_id": 1
},
{
"id": 3,
"name": "Путине",
"person_id": 1
}
]
}
ресурс: /keyword, /keyword/<id>, /keyword/<name>
Поддерживаемые запросы: GET, POST, PUT, DELETE
Возвращаемые коды: 200, 201, 400, 403, 404
Параметры: Content-Type: application/json {"name":"", "person_id": ""}
Информация об объекте:
GET http://host:5000/keyword/1
или:
GET http://host:5000/keyword/Путину
ответ:
HTTP/1.0 200 OK
Content-Length: 00
Content-Type: application/json
Date: Thu, 1 Jan 1970 00:00:00 GMT
Server: SomeWebServer/0.0.0
{
"id": 2,
"name": "Путину",
"person_id": 1
}
Создание объекта:
POST http://host:5000/keyword
Content-Type: application/json {"name":"Медведеву", "person_id": "2"}
или:
PUT http://host:5000/keyword/0
Content-Type: application/json {"name":"Медведеву", "person_id": "2"}
ответ:
HTTP/1.0 201 CREATED
Content-Length: 00
Content-Type: application/json
Date: Thu, 1 Jan 1970 00:00:00 GMT
Server: SomeWebServer/0.0.0
{
"id": 4,
"name": "Медведеву",
"person_id": 2
}
В случае если объект уже существует:
HTTP/1.0 400 BAD REQUEST
Content-Length: 00
Content-Type: application/json
Date: Thu, 1 Jan 1970 00:00:00 GMT
Server: SomeWebServer/0.0.0
{
"message": "A keyword with name 'Медведеву' already exists."
}
редактирование:
PUT http://host:5000/keyword/2
Content-Type: application/json {"name":"ИмяДлинное", "person_id": "3"}
ответ:
HTTP/1.0 200 OK
Content-Length: 00
Content-Type: application/json
Date: Thu, 1 Jan 1970 00:00:00 GMT
Server: SomeWebServer/0.0.0
{
"id": 2,
"name": "ИмяДлинное",
"person_id": 3
}
удаление:
DELETE http://host:5000/keyword/2
ответ:
HTTP/1.0 200 OK
Content-Length: 00
Content-Type: application/json
Date: Thu, 1 Jan 1970 00:00:00 GMT
Server: SomeWebServer/0.0.0
{
"message": "Keyword deleted"
}
список:
GET http://host:5000/base_statistic
по ID:
GET http://host:5000/base_statistic/1
ответ:
HTTP/1.0 200 OK
Content-Length: 00
Content-Type: application/json
Date: Thu, 1 Jan 1970 00:00:00 GMT
Server: SomeWebServer/0.0.0
{
"site": "lenta.ru",
"total_count": 1,
"total_count_not_round": 4,
"total_count_round": 0
}
список:
GET http://host:5000/rank_statistic
по ID:
GET http://host:5000/rank_statistic/1
по Date:
GET http://host:5000/rank_statistic/2017-02-11
по ID, Date:
GET http://host:5000/rank_statistic/1/2017-02-11
по ID, Date1/Date2:
GET http://host:5000/rank_statistic/1/2017-02-10/2017-02-11
ответ:
HTTP/1.0 200 OK
Content-Length: 00
Content-Type: application/json
Date: Thu, 1 Jan 1970 00:00:00 GMT
Server: SomeWebServer/0.0.0
{
"id": 1,
"name": "lenta.ru",
"persons": [
{
"id": 1,
"name": "Путин В.В.",
"rank": "10"
},
{
"id": 4,
"name": "Иванов И.И.",
"rank": "7"
},
{
"id": 5,
"name": "Петров А.",
"rank": "not found statistic for this person"
}
]
}
"rank": "not found statistic for this person" - статистика не была подсчитана.