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

Python Flask 101 – Intro и API здание

Каждый язык программирования имеет фреймворки для создания веб-сервера, также известный как веб-каркас. В… Теги с колбой, Python.

Каждый язык программирования имеет фреймворки для создания веб-сервера, также известный как веб-каркас. В Python есть несколько таких, как Django, бутылка, пирамида, казонит, фастапи, Web2Py и многие другие. Рядом с Джанго самая тяжелая используемая веб-каркас Python – это колба. Flask – это экспресс (минималистский веб-каркас), что Django – рубин на рельсах (батареи включали веб-каркас).

В этом руководстве мы будем строить базовый JSON API в колбе. После этого я делюсь ресурсами для глубже в использовании колбу.

Предпосылки:

Настраивать

  • Создать пустую папку для работы

  • Откройте терминал в этой папке

  • Создать виртуальную среду Python Python -M VINV VINV

  • Включите виртуальную среду Источник ./венв/Bin/Activate (Обратите внимание на изменение вашей терминальной подсказки)

Если не знаком с тем, что есть и какова цель виртуальной среды, прочитайте следующие статьи

Часть I: Virtualenv & Pyenv Часть II: Встроенный виртуальный Env Generator Часть III: Pipenv, окончательная виртуальная среда

  • Установить колбу PIP Установите колбу

Наш первый маршрут

  • Создайте файл под названием Server.py
# Import the flask library
from flask import Flask

# create the flask application object pa
app = Flask(__name__)

## Decorator making the subsequent function a route
@app.route("/", methods=["GET"])
## this functions return value is the response of the route (function name doesn't matter)
def first_route():
  return "hello world", 200 ## will return text with a 200 status

* * Если ваше интересно о Имя Переменная, это специальная переменная в Python, которую вы можете Читайте о здесь **

Чтобы запустить сервер, используйте команду

Flask_app = server.py python -m flask run

  • Flak_app = server.py Это определяет переменную FLASK_APP ENV, необходимую для определения того, какой файл имеет объект приложения для запуска Flask.

  • Python -m Позволяет запустить модуль Python или файл в виде скрипта

  • Колбу У нас работают модуль колба

  • Беги RUN – это команда, встроенная в модуль Flask, чтобы создать веб-сервер с приложением, указанным переменной FLASK_APP

После того, как сервер запущен в локальный хост: 5000, и вы должны увидеть HellowOrld! Поздравляю, вы создали свой первый флаговой маршрут!

Основы JSON API

Возвращая ответы JSON в колбе довольно легко, до тех пор, пока функция маршрутов возвращает словарь Python, он может превратиться в JSON. Для любых экземпляров классов Python вы можете либо преобразовать их в словарь, добавив встроенный метод AS_DICT.

class Dog():

    ## Dog Constructor
    def __init__(self, name, age):
      self.name = name
      self.age = age

    ## Method for Turning to Dictionary to send back as JSON
    def as_dict(self):
       return {c.name: getattr(self, c.name) for c in self.__table__.columns}

## Create Instance of Dog
sparky = Dog("Sparky", 5)

## Print Dog as a Dictionary
print(Dog.as_dict())

Основной труд

Мы будем использовать базовый список/массив еды внутри словаря, чтобы создать простое API для добавления, редактирования, удаления приема пищи в массиве. Добавьте следующее на Server.py.

  • Обратите внимание, что добавили запрос в импорт колбы, это позволяет нам тянуть данные из запроса, такого как тело запроса и метод запроса
## List of Dictionaries containing meals
meals = [{"meal": "breakfast"}, {"meal": "lunch"}, {"meal": "dinner"}]


## INDEX & CREATE ROUTE - Return all meals and create meals
@app.route("/meals", methods=["GET", "POST"] )
def meals_index_create():
    ## If a get request, return all meals
    if (request.method == "GET"):
        print(meals)
        return {"meals": meals}
    ## If a post, add a meal expecting a json body with a meal property
    if (request.method == "POST"):
        # get the request body as a python dictionary
        body = request.json
        # append the new meal to meals
        meals.append(body)
        # return new list of meals
        return {"meals": meals}

Если вы хотите запустить сервер и используйте инструмент, похожий на почтальон, чтобы сделать запрос GET и POST к/еды. Обязательно отправьте кузов JSON для запроса пост.

{
  "meal":"brunch"
}

Далее мы добавим шоу, удаление и обновление маршруты

  • Обратите внимание на в сторону определения конечной точки. Это называется ARL PARAL и является способом определения переменной в самом URL. Затем мы можем получить эту переменную в качестве аргумента нашей функции маршрута (теперь обратите внимание, что функция имеет определенные параметры).

  • Поскольку мы сделаем задания, используя имя переменного питания, без дополнительных деталей, Python подумает, что мы создаем новую «локальную» версию пищи, не редактирующие глобальную, определенную вне функции. Чтобы получить доступ к едам, мы будем использовать глобальное ключевое слово для объявления о том, что ссылки на питание в этой функции являются ссылки на ранее определенную глобальную переменную.

  • В разделе «Удалить» вы заметите какой-то странный синтаксис, это называется списком понимания словаря. По сути, это способ создания нового списка/DICK, зацикливающую над другим. Читать далее… Понимание спискаСловарь понимание

## SHOW, Update, and Delete routes - Get one, update one, delete one
@app.route("/meals/", methods=["GET", "PUT", "DELETE"])
def meals_show_update_delete(index):
    # save the contents of the request body
    body = request.json
    # make sure that meals refers to the global variable before reassignment
    global meals
    # make sure that the index is a integer, not a string
    index = int(index)
    if(request.method == "GET"):
        # return the meal at the index specified in the url param
        return meals[index]
    if(request.method == "PUT"):
        #update the specified index with the request body, then return it
        meals[index] = body
        return meals[index]
    if(request.method == "DELETE"):
        ## make meals a new dictionary, where the meals list has the desired item removed using the list comprehension feature (creating a list or dict by iterating over another one with an expression)
        meals = {
            "meals":[i for i in meals if not (i["meal"] == meals[index]["meal"])]
            }
        return meals

Там у вас полный груз на еде, захватывающие!

Что дальше

Оригинал: “https://dev.to/alexmercedcoder/python-flask-101-intro-and-api-building-3b88”