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

Создание API с помощью колбы Python для загрузки файлов в облачную

Вы можете написать свой собственный облачный API загрузки с помощью колбы и Python SDK. Tagged с облачным, Python, Flask.

Создание API с помощью колбы Python для загрузки файлов в облачную

Название Meta: Создание API с помощью колбы Python для загрузки файлов в облачную мета -описание: Узнайте, как создать API с помощью колбы Python и Python Sdk Cloudary, чтобы загрузить файлы любого формата в облачный.

Код

Облачные предлагают SDK для многих языков программирования и фреймворков. Несмотря на то, что он также предлагает конечную точку API загрузки как для кода, так и для интерфейса, большинство разработчиков считают SDK очень полезными. Если вы работаете с мощной средней структурой, такими как Python Flask, вы будете рады услышать, что теперь доступен Python SDK. Этот учебник проводит вас через процесс создания API для загрузки изображений в облачную. Вы также можете загрузить другие типы файлов, включая видео и даже немедиа, с API.

Понимание разницы между задней и передней частью

Как правило, код, который работает на сервере, является Задняя часть и код, который работает в браузере, это внешний интерфейс . Однако, поскольку код сервера может отображать HTML, CSS и JavaScript, которые работают в браузере, иногда приводит к путанице. В контексте облачных SDK, бэк-энды могут читать секретные учетные данные, которые не должны распространяться в передней части. Другими словами, вы никогда не должны раскрывать переменные среды в передней части, потому что фронтальные SDK не могут скрывать учетные данные, которые должны храниться в секрете. В качестве решения вы можете загрузить код браузера с помощью Cloudarian’s Неподписанные пресеты без раскрытия секретных полномочий. Лучшим способом было бы построить API в среднем для безопасных загрузок, сохраняя ваш Api_secret Учетные данные скрыты. Читайте дальше, чтобы увидеть, как это сделать с помощью Python SDK и Python Clask или Python Django от Python.

Кодирование API -API Flask для загрузки в облачный

Структура колбы облегчает определение маршрутов и их функциональных возможностей. Чтобы начать, сначала создайте маршрут с именем /upload , который принимает Пост который содержит Multipart/Form-Data Анкет Затем вы собираете ввод файла изображения в FormData объект в обработке отправки и СООБЩЕНИЕ Это на ваш собственный API Flask, чтобы назвать API загрузки Cloudary, который настроен с вашим полным набором облачных учетных данных. Флапа Запрос Опция позволяет получить данные от клиента. При отправке файлов, таких как загрузка изображений, вы можете вызвать Запрос Чтобы получить доступ к ним.

from flask import Flask,render_template, request
if request.method == 'POST':
    file_to_upload = request.files['file']

Данные, полученные из request.files ['file'] это экземпляр Веркзег. Filestorage Анкет Объект может быть передан функции загрузки Python SDK. Колба затем обертывает Веркзег , который обрабатывает детали интерфейса шлюза веб -сервера (WSGI).

if file_to_upload:
    upload_result = cloudinary.uploader.upload(file_to_upload)
    app.logger.info(upload_result)

Для загрузки в облачный, по умолчанию resource_type это Изображение Анкет Чтобы развернуть или создать новый API Flask, добавить resource_type: 'видео' или resource_type: 'Raw' Для видео или необработанных файлов соответственно. RAW относится к немедийным форматам файлов, включая текст и JSON. Наконец, upload_result это объект, который содержит ответ загрузки. Чтобы завершить действия вашего загрузить API, верните этот ответ клиенту, как это:

from flask import jsonify
return jsonify(upload_result)

Ниже приведен полный код вашего загрузить API

@app.route("/upload", methods=['POST'])
def upload_file():
  app.logger.info('in upload route')

  cloudinary.config(cloud_name = os.getenv('CLOUD_NAME'), api_key=os.getenv('API_KEY'), 
    api_secret=os.getenv('API_SECRET'))
  upload_result = None
  if request.method == 'POST':
    file_to_upload = request.files['file']
    app.logger.info('%s file_to_upload', file_to_upload)
    if file_to_upload:
      upload_result = cloudinary.uploader.upload(file_to_upload)
      app.logger.info(upload_result)
      return jsonify(upload_result)

Настройка приложения Flask

Далее следуйте шагам ниже, чтобы построить приложение.

Настроить виртуальную среду

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

python3 -m venv env
source env/bin/activate

Чтобы деактивировать окружающую среду, тип:

deactivate
source env/bin/activate

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

Установите колбу с этой командой:

python3 -m pip install Flask==1.1.1

Добавить файл redtion.txt

Создать Требования.txt Файл, чтобы отслеживать все библиотеки, необходимые для приложения, и для облегчения будущего развертывания.

python3 -m pip freeze > requirements.txt

Обновите установщик пакета Python

При необходимости обновите установщик пакета Python, называемый PIP, с командой ниже. Команда может варьироваться в зависимости от вашей локальной установки Python. Как показано ниже, заморозить Команда пишет библиотеку и версию в Требования.txt файл.

usr/local/opt/python@3.9/bin/python3.9 -m pip install --upgrade pip
python3 -m pip freeze > requirements.txt

Установите облачный

Затем установите облачный, чтобы получить доступ к его API загрузки для Python SDK.

 python3 -m pip install cloudinary
 python3 -m pip freeze > requirements.txt

Добавить поддержку CORS

Если вы хотите получить доступ к своему загрузить API от клиента, обслуживаемого другого хоста, добавьте поддержку обмена ресурсами Cross Origin (CORS):

python3 -m pip install flask-cors
python3 -m pip freeze > requirements.txt

Теперь вы можете добавить код для настройки COR для всех API и, в частности, загрузить API Приведенный ниже код демонстрирует оба варианта.

from flask_cors import CORS, cross_origin
app = Flask(__name__)
# After creating the Flask app, you can make all APIs allow cross-origin access.
CORS(app)
# or a specific API
@app.route("/upload", methods=['POST'])
@cross_origin()

Работа с переменными окружающей среды

Вы можете легко загрузить переменные среды с помощью Python. Удобно, Python-Dotenv Библиотека смоделирована на node.js dotenv упаковка. Вам нужны три облачные переменные среды, то есть Cloud_Name , Api_key и Api_secret , для вашего кода, но не делитесь Api_secret Анкет Вы можете экспортировать эти переменные в местную среду. Когда вы развернетесь в Heroku, вы можете добавить их, чтобы сделать их доступными в приложение, когда оно работает в контейнере Heroku.

from dotenv import load_dotenv
load_dotenv()

В вашем загрузить API, вы читаете в переменных среды с Cloudary.config () функция Затем вы получаете доступ к этим переменным с помощью os.getenv () функция в dotenv библиотека.

cloudinary.config(cloud_name = os.getenv('CLOUD_NAME'), api_key=os.getenv('API_KEY'), 
    api_secret=os.getenv('API_SECRET'))

При работе локально вы можете создать gitignore’d .env Файл, который содержит ваши облачные учетные данные для локального тестирования. Значения для этих учетных данных отображаются в вашей облачной консоли.

CLOUD_NAME=CLOUD_NAME
API_KEY=API_KEY
API_SECRET=API_SECRET

Далее установите Python-Dotenv библиотека:

python3 -m pip install python-dotenv
python3 -m pip freeze > requirements.txt

Тестирование API Локально

Теперь вы готовы проверить приложение на локальном уровне. Вы можете провести сквозное тестирование с почтальником и локальной формой, которая указывает на сервер, работающий на Localhost Анкет Создайте свое приложение с функцией загрузки путем загрузки, клонирования или копирования из этот репозиторий GitHub Анкет Добавьте свои учетные данные в .env Файл, а затем запустите свой сервер на Localhost Анкет

python3 app.py

Приведенная выше команда открывает сервер в http://127.0.0.1:5000/ Анкет Обратите внимание, что порт по умолчанию составляет 5000.

Тест с почтальником

В почтальоне, сделайте следующее:

  1. Установите метод на Пост Анкет
  2. Установите тип тела на Форма-дата Анкет
  3. Установить пары ключей/значения для ввода. Установите значение для ключа в Файл Анкет Мышь над Ключ поле и выберите Текст или Файл из выпадающего меню. Под Файл это Выберите файлы кнопка; Нажмите на него, чтобы выбрать файл с вашего локального диска.
  4. Нажмите Отправить Для обработки запроса.

Ответ API с облачной загрузкой отображается в нижней части страницы

Проверка с локальной формой

Следуй этим шагам:

  1. Откройте index.html Файл с локальным HTTP -сервером. Выберите локальный файл и нажмите Загрузить .
  2. Запустите код JavaScript ниже. Fetch Команды вызовы сервера, который работает на Localhost Анкет

    Если процесс успешно, в консоли отображается отклик API с облачной загрузкой. Не забудьте установить event.preventdefault (); для обработчика отправки. В противном случае вы получите обновление страницы и не увидите свой журнал.

  3. Разместите файл в обработчике отправки, создав FormData объект и добавление файла, как показано в коде ниже.

Приведенные выше кодовые пакеты вверх по файлу, который вы выбираете в вводе своей формы, как если бы вы отправили многочасовую форму. Многочисленная форма важна для отправки файлов, поскольку каждый вход отправляется в виде блока данных, разделенных границами. Результат затем отображается в вашей консоли, например, это:

Развертывание приложения Flask в Heroku

Heroku-это платформа в качестве услуги (PAAS) для обслуживания прототипов или готовых к производству приложений. Принимайте API, который вы только что построили на Heroku, выполнив следующее:

  1. Создайте бесплатную учетную запись на Heroku.

  2. Установить Онломщик , Short For Green Unicorn, HTTP -сервер Python WSGI для размещения приложений.

  3. Создайте файл с именем Prodfile С инструкциями для Heroku начать ваше приложение с надписей:

  4. Создайте файл с именем Runtime.txt которая содержит версию Python, которую вы хотите использовать:

  5. Развернуть с помощью git:

Heroku git: удаленное-оттаивание-инлет-61413

git push heroku Master

Heroku Открыт

Heroku Login



You can build the new Heroku app with the CLI. However, as noted above, if you built it on the heroku.com dashboard, you can just add the link Heroku created for you to a `git:remote` command.

### Loading Environment Variables on Heroku

To load environment variables on Heroku, open the dashboard and navigate to your new server instance. Click the **Settings** tab and scroll down to the **Config Vars** section. Click **Reveal Config Vars**, where you can enter Key/Value pairs. This is where you load your Cloudinary environment variables: `CLOUD_NAME`, `API_KEY`, and `API_SECRET`.

![Heroku Config Vars](https://res.cloudinary.com/cloudinary-marketing/image/upload/w_700,c_fill,f_auto,q_auto,dpr_2.0/Web_Assets/blog/environmentvars.jpg)

For more options for setting up `prod` and `dev` instances, see the [Heroku documentation](https://devcenter.heroku.com/articles/git).

## Testing the API Deployed on Heroku
If you have a `GET` method API like the "Hello World!" in the `app.py` example, you can open the Heroku app in the browser.

For end-to-end testing, you can `POST` to the Heroku server link from Postman. The result is similar to that for local testing.

![Remote Post](https://res.cloudinary.com/cloudinary-marketing/image/upload/w_700,c_fill,f_auto,q_auto,dpr_2.0/Web_Assets/blog/remotepost.jpg)

Alternatively, modify the `index.html` file to post to your Heroku server. Just add your Heroku server link to the `fetch` command, like this:



```JavaScript
fetch("https://xxxx.herokuapp.com", options)

Обеспечение приложения

Возможно, вы заметили, что ссылка развертывания Heroku была стерта с изображений выше. Это для безопасности. Развертывание этого приложения в Heroku позволяет загружать данные в облачную. Если ссылка не защищена только для использования только на аутентифицированной веб -странице, любой может загрузить в ваше облачное облако. Даже если вы скрываете переменные среды, вы бы создали публичный метод для изменения данных в вашем облаке.

Этот урок не охватывает, как настроить аутентификацию. Многие варианты доступны для аутентификации маршрутов API. Возможно, вы захотите изучить Auth0, Google или GitHub. В качестве альтернативы, создайте свой собственный процесс на основе вашей базы данных пользователей для этого типа аутентификации.

Двигаясь дальше

После того, как вы получите этот API, вы можете создать другие медиа -API с облачным SDK Python, следуя тому же шаблону. Радоваться, веселиться!

Оригинал: “https://dev.to/rebeccapeltz/creating-an-api-with-python-flask-to-upload-files-to-cloudinary-1a0a”