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

Руководство по созданию восстановленного API с помощью Python, Flask и MongoDB

Примечание. Эта статья написана моим коллегами. Мы блогаем в том же месте в центре до res … Теги с Python, Flask, MongoDB.

Примечание. Эта статья написана моим коллегами. Мы блогися на одном месте

Вступление в спокойные API

Restful API с использованием JSON в HTTP Protocol – это, безусловно, самый популярный подход к созданию веб-API. Они позволяют разработчикам подумать с точки зрения ресурсов с действиями на этих ресурсов CRUD (создавать, чтение, обновление, удаление). Тем не менее, есть предстоящие API, такие как График Что все больше становится популярным со многими приложениями.

В этом руководстве мы собираемся построить спокойную API для создания, чтения, UpdateAnd удалить документы (которые будут содержать информацию о пользователе) от база данных Mongo Pyston Python и Flask.

Начиная

Вот инструменты, которые нам нужно будет построить наши API:

Создание вашей местной среды

Примечание. Во время работы с Python мы рекомендуем использовать виртуальную среду, чтобы держать все зависимости проекта, изолированные от других проектов.

conda create -n restfulapi python=2.7 anaconda # Create the environment
source activate restfulapi # Activate the environment

Установка зависимостей

pip install -r requirements.txt

Запустите сервер MongoDB

Если вы используете MacOS, вы можете использовать заваривать Чтобы запустить сервер.

brew services start mongodb

Коллекции в Монгодб

Коллекция аналогична таблице в традиционной реляционной БД. Мы будем создавать Пользователи Коллекция TOSTORE Пользовательские детали похожи на Пользователи Таблица в SQL.

Создать пользователей

Мы создадим конечную точку Post/API/V1/Пользователи который принимает в объекте JSON, состоящий из деталей пользователей, таких как Имя , электронное письмо , Телефон Как JSON в тело запроса. Мы также могли бы разработать конечную точку, чтобы взять на себя массив пользователей.

@app.route("/api/v1/users", methods=['POST'])
def create_user():
    """
       Function to create new users.
    """
    try:
      # Create new users
      body = ast.literal_eval(json.dumps(request.get_json()))
      record_created = collection.insert(body)
      body._id = record_created.inserted_id
      # Prepare the response
      return jsonify(body)
    except:
      # Something went wrong server side, so return Internal Server Error.
      resp.status_code = 500
      return resp

Если это пакетная конечная точка, принимающая в массиве пользователей, мы могли бы вернуть количество созданных пользователей. С другой стороны, один пользователь может вернуть идентификатор объекта, поэтому Frestend может ссылаться на новичок в новинок.

Читать пользователей

Чтобы получить список пользователей, которые мы только что создали, мы разработаем конечную точку Получить/API/V1/пользователи и пройти критерии поиска в качестве параметров строки запроса.

@app.route("/api/v1/users", methods=['GET'])
def fetch_users():
    """
       Function to fetch the users.
    """
    # Prepare the response
    try:
      # Call the function to get the query params
      query_params = helper_module.parse_query_params(request.query_string)
      key = query_params.keys()[0]
      value = query_params.values()[0]

      # Encode params
      key, value = helper_module.encode_params(key, value)

      # Fetch all the record(s)
      records_fetched = collection.find({key: value})

      if len(records_fetched) > 0:
        # Prepare the response
        resp = jsonify(records_fetched)
        return resp
      else:
        # No records found, so we can return an empty list (Added for example)
        return jsonify([])
    except:
      # Something went wrong server side, so return Internal Server Error.
      resp.status_code = 500
      return resp

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

Обновлять пользователей

Теперь мы разработаем конечную точку Post/API/V1/пользователи/ обновить детали пользователя.

@app.route("/api/v1/users/", methods=['POST'])
def update_user():
    """
       Function to update the user.
    """
     try:
          # Update the user
          body = ast.literal_eval(json.dumps(request.get_json()))
          record_updated = collection.update_one({"_id": user_id}, body)

          # Prepare the response
          resp = jsonify(body)
      except:
        resp.status_code = 500
        # Return the object
        return resp

Запрос на обновление:

Удалить пользователей

Наконец, мы разработаем конечную точку Удалить/API/V1/пользователи/ Чтобы удалить пользователь от базы данных.

@app.route("/api/v1/users/", methods=['DELETE'])
def remove_user():
    """
       Function to remove the user.
    """
    try:
        # Delete all the users matched
        body = ast.literal_eval(json.dumps(request.get_json()))
        record_deleted = collection.delete_one({ "_id" : user_id })

        # Prepare the response
        if result.deleted_count > 0
          # We return 204 No Content to imply resource updated successfully without returning
          # the deleted entity.
          resp.status_code = 204
          return resp
        else:
          # Entity not found, perhaps already deleted, return 404
          resp.status_code = 404
          return resp
    except:
      # Something went wrong server side, so return Internal Server Error.
      resp.status_code = 500
      return resp

Мы бы уточняли условие соответствия, на котором нужно удалить документ в этом организме. Например, мы хотели бы удалить документ с помощью ID это 3

Как только пользователи будут удалены, мы вернем количество удаленных сообщений пользователей клиенту.

Страница обработки не найден запрос

Мы рекомендуем обрабатывать страницу не найден запрос с информативным сообщением для пользователя.

@app.errorhandler(404)
def page_not_found(e):
    """Send message to user with notFound 404 status."""
    # Message to the user
    message = {
        "message": "Message from the API",
        "errors": [
            {
                "message": "This route is not currently supported. Please refer API documentation."
            }
        ]
    }
    # Make the message looks good
    resp = jsonify(message)
    # Send OK response
    resp.status_code = 404
    # Return the object
    return resp

Если вы хотите играть по данным, вы также можете использовать оболочку Robo 3T Mongo.

Чтобы увидеть reзов API в действии, вы можете Git Clone и запустить этот пример AppRom Гадость

В следующем блоге мы узнали о том, как разрешать и аутентифицировать наши API. Если вам интересно начать работу с graphql с помощью python – пожалуйста, обратитесь к этому Блог Отказ Между тем, если у вас есть какие-либо вопросы, обратитесь к Команда Moesif

Оригинал: “https://dev.to/xngwng/guide-to-creating-a-restful-api-using-python-flask-and-mongodb-2566”