Рубрики
Без рубрики

Создание API REST с MongoDB и Falcon Framework Python

Недавно я начал работать с Falcon Framework, чтобы сделать API для сайта укорочения URL. Фри … Tagged с Python, WebDev.

Недавно я начал работать с Falcon Framework, чтобы сделать API для сайта укорочения URL. Мой друг показал мне структуру, и я решил попробовать. Это немного кривая обучения из других общих рамок, таких как Django или Flask, но как только вы получите ее, с ней очень легко работать. В этой статье я расскажу об базовой настройке API Falcon REST с поддержкой MongoDB. Это первая часть серии Multipart о том, как создать полный Dart, Falcon, Mongodb Webapp.

Для начала нам нужна структура файла, как SO:

- app/
|- controllers/
|- resources/
|- models/
|- __init__.py
|- settings.py
- app.py

Вся наша логика будет жить внутри приложения/папки. Внутри этой папки приложения у нас есть контроллеры/папку, которая будет держать вспомогательные функции и логику для общения с нашей базой данных и выполнения внутренних функций, Theresources/Polder, которая будет содержать все наши маршруты, а Fimodels/Polder будут удерживать логику для настройки Наши модели в нашей базе данных. Файл настройки. Убедитесь, что вы включите init .py файл в каждой папке insideapp/. Верхний уровень init .py File будет включать нашу базовую настройку и определение нашего приложения. Давайте начнем с получения зависимостей, необходимых для запуска нашего приложения.

Убедитесь, что в вашей системе установлен MongoDB, или у вас есть база данных, размещенную на сервере. Если у вас есть его на вашем сервере, то постоянная хоста в нашей папке настройки. Если у вас есть база данных, размещенная локально для целей разработки, вы будете использовать Localhost в качестве постоянной хоста.

Вы можете проверить, установлен ли у вас MongoDB.

mongod --version

Если вы видите что -то вроде:

root@mainbox:~# mongod --version
db version v3.2.22

тогда вы должны быть установлены. Вероятно, будет больше информации о вашей среде, но первая строка – это все, что имеет значение. Для этого я буду использовать MongoDB версию 3.2.22.

Чтобы настройка с нашими зависимостями Python, мы начнем с создания VirtualEnv:

pip3 install virtualenv
virtualenv .venv
source .venv/bin/activate # or .venv/Scripts/activate on Windows
pip install falcon falcon-jsonify mongoengine

Если вы находитесь в Unix или Linux, вам также нужно будет установить веб -сервер для запуска приложения. Вы можете использовать UWSGI или стреляющий. Если вы находитесь в Windows, вы захотите использовать модуль официантки.

Чтобы установить UWSGI или стрелобник:

pip install uwsgi
pip install gunicorn
To install waitress and hupper for hot reloads:
pip install waitress hupper

Официантка не включает в себя опцию горячей нагрузки по умолчанию, такую как UWSGI или стреляющий король, поэтому вы должны использовать Hupper, чтобы иметь эту функцию (это значительно облегчает разработку разработки но это не обязательно). Теперь, когда у нас установлены все наши зависимости, мы можем начать настройку нашего приложения. Откройте наш файл stens.py внутри приложения/. Установите его как следующий фрагмент, заменяющий вашу информацию:

import os
import flask_jsonfiy
dbcfg = {
    'host': 'localhost', # or external server address
    'port': 27017,
    'username': os.environ.get('MONGO_USER'),
    'password': os.environ.get('MONGO_PASS'),
}
middleware = [
    falcon_jsonify.Middleware(help_messages=True),
]

Это все, что нам нужно сейчас. Если вы в конечном итоге используете промежуточное программное обеспечение или вам нужно настроить другие параметры, сделайте это внутри этого файла и импортируйте его из других модулей. Теперь мы можем настроить наше ядро init .py file внутри приложения/папки. Установите это так:

import falcon
import mongoengine as mongo
from app.settings import middleware
app = falcon.API(middleware=middleware)
db = mongo.connect(
    'development', # This will be the name of your database
    host=dbcfg['host'],
    port=dbcfg['port'],
    username=dbcfg['username'],
    password=dbcfg['password']
)

На данный момент все, что нам нужно, пока мы не добавим конечную точку в ресурсах/. Теперь мы можем настроить нашу базовую пользовательскую модель для веб -сайта. Это единственная модель, которую мы будем работать в этой части учебника. Чтобы начать создать файл внутри моделей/notement_model.py. Вы должны настроить свой файл так:

from mongoengine import *
import datetime
class NoteModel(Document):
   title = StringField(max_length=200, required=True)
   body = StringField(max_length=32, required=True, unique=True)

На данный момент не так много, но вы добавите к этому позже. Теперь мы можем перейти на настройку нашей основной конечной точки регистра. Откройте ресурсы/папку и добавьте файл с именем notes.py. Внутри этого файла мы добавим логику для настройки наших обработчиков и ответов. Вы также должны сделать файл с именем notes.py внутри контроллеров/папки. Эти файлы будут работать вместе. Настройка ресурсов/notes.py файл так:

import falcon
from app.controllers.notes import NotesController
from app import db
from app.models.notes_model import NoteModel
class GetNotes(object):
    def on_get(self, req, resp, id):
        resp.status = falcon.HTTP_200
        notes = []
        notes_obj = NoteModel.objects(title=title)
        for object in notes_obj:
            notes.append(object)
        resp.json = {
            'notes': notes
        }
class UploadNotes(object):
    def on_post(self, req, resp):
        title = resp.get_json('title', dtype=str)
        body = resp.get_json('body', dtype=str)
        notes_obj = NoteModel(
            title=title, body=body
        )
        notes_obj.save()
        resp.status = falcon.HTTP_201
        resp.json = {
            'message': 'Your Note Has Been Posted!',
            'status': 200,
            'successful': True
        }

Теперь, когда у нас есть настройка ресурсов, мы можем открыть наше ядро init .py файл в приложении/папке. Вы захотите добавить эти линии внизу: от app.resources.notes import * app.add_route (‘/notes/’, uploadnotes) app.add_route (‘/notes/{}’, getNotes) В отличие от других фреймворков, вы ничего не вернете. Это все, что нам нужно для базового API REST. Теперь мы можем общаться с нашей базой данных MongoDB, отправив запросы на наш сервер.

Теперь мы можем начать нашу веб -приложение:

# With Gunicorn:
gunicorn -p 8000 --reload app:app
# With uWSGI:
uwsgi --http :9090 --wsgi-file app.py
With Waitress and Hupper:
hupper -m waitress --port=8000 app:app

Ваш сервер должен работать на http://localhost: 8000/ в настоящее время. Вы должны попытаться опубликовать что -то в/заметки/конечную точку, что позволит вам добавить примечание.

Оригинал: “https://dev.to/m4cs/creating-a-rest-api-with-mongodb-and-the-falcon-framework-python-5i6”