Создать простой REST сервис, использующий библиотеку wikipedia. Создайте 1 роут с параметром path, 1 роут с параметром query, 1 роут с передачей параметров в теле запроса. Все запросы должны возвращаться и валидирироваться по схемам.
pip install flask
Далее создайте файл с расширением .py, например, app.py, и откройте его в текстовом редакторе.
В начале файла добавьте необходимые импорты:
python
from flask import Flask, request
import wikipedia
from flask_pydantic import validate
from pydantic import BaseModel
`Flask` используется для создания и настройки веб-приложения,` request` — для работы с запросами, `wikipedia` - для получения данных из Wikipedia. Мы также импортируем `validate` из `flask_pydantic`, чтобы проверить входные данные на соответствие схеме, и `BaseModel` из `pydantic`, чтобы создать схему валидации.
Создадим экземпляр класса `Flask` и сохраним его в переменной `app`:
python
app = Flask(__name__)
Теперь создадим схемы валидации для каждого из роутов. Для этого создадим классы, наследующиеся от `BaseModel` с необходимыми полями схемы. Например, для роута с параметром пути:
python
class PathParams(BaseModel):
path: str
Аналогично для роутов с параметром запроса и передачей параметров в теле запроса:
python
class QueryParams(BaseModel):
query: str
class BodyParams(BaseModel):
param1: str
param2: int
Теперь мы можем определить сам REST-API с использованием декораторов Flask. Для роута с параметром пути:
python
@app.route('/path/<string:path>', methods=['GET'])
@validate()
def get_path(path: str):
return wikipedia.page(path).content
Здесь мы используем декоратор `app.route` для указания URL пути и методов, которые могут быть использованы для доступа к роуту. Декоратор `validate()` применяется для валидации входных данных в соответствии с указанной схемой `PathParams`. Функция `get_path` будет вызвана при обращении к данному роуту.
Аналогично для роутов с параметром запроса и передачей параметров в теле запроса:
python
@app.route('/query', methods=['GET'])
@validate()
def get_query():
query_param = request.args.get('query')
return wikipedia.page(query_param).content
@app.route('/body', methods=['POST'])
@validate()
def post_body():
body_params = request.get_json()
param1 = body_params['param1']
param2 = body_params['param2']
# do something with the parameters
return 'Success'
Здесь мы используем декоратор `app.route` для указания URL пути и методов для соответствующих роутов. Для получения параметров запроса используем `request.args.get`, а для получения параметров из тела запроса - `request.get_json()`.
Наконец, запустим веб-приложение:
python
if __name__ == '__main__':
app.run()
Теперь вы можете запустить свой сервер, выполнить запросы к роутам и получить данные из Wikipedia, валидируя входные параметры по схемам. Примеры запросов:
- Получить содержимое статьи по пути: `http://localhost:5000/path/Python`
- Получить содержимое статьи по запросу: `http://localhost:5000/query?query=Python`
- Отправить параметры в теле запроса:
- URL: `http://localhost:5000/body`
- Body (тип: JSON): `{"param1": "value1", "param2": 5}`
Это пример простого REST-сервиса, использующего библиотеку Wikipedia, с тремя роутами, каждый из которых валидируется по схеме. Вы можете добавить другие роуты и функции в своем коде, в зависимости от ваших потребностей.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет