【问题标题】:How to give API key to Django model [closed]如何为 Django 模型提供 API 密钥 [关闭]
【发布时间】:2019-08-14 02:07:48
【问题描述】:

我必须使用 Django 构建 Web 服务和 API。我获得了模型描述和带有 API 方法的 JSON 文件 (here)。我决定使用 Django REST 框架,但这是我第一次使用 API。

所描述模型中困扰我的字段: api_key = models.CharField(...) #access key to api

据我所知,我需要将此密钥提供给模型对象(在我的情况下,它是打印机的模型,用于打印客户和厨房的支票),然后必须使用它来访问这些对象到API(方法 /new_checks/ 和 /check/)。如何创建这些密钥?我应该只使用随机 API 密钥生成器,还是在 Django REST 框架中有一些我还没有找到的工具?

【问题讨论】:

    标签: python django api django-models django-rest-framework


    【解决方案1】:

    您可以简单地使用以下库。让我帮您做一个简短的描述。

    安装djangorestframework-api-key

    1. 运行以下命令安装 djangorestframework-api-key :
      pip install djangorestframework-api-key
    2. 将该应用添加到您的INSTALLED_APPS
    # settings.py
    INSTALLED_APPS = [
      # ...,
      'rest_framework',
      'rest_framework_api_key',
    ]
    
    1. 使用python manage.py migrate 运行迁移


    设置所需权限:

    HasAPIKey 权限类要求所有客户端提供有效的 API 密钥,无论它们是否提供身份验证详细信息。
    与每个权限类一样,您可以全局使用它们:

    # settings.py
    REST_FRAMEWORK = {
        'DEFAULT_PERMISSION_CLASSES': [
            'rest_framework_api_key.permissions.HasAPIKey',
        ]
    }
    

    或基于视图的类

    # views.py
    from rest_framework.views import APIView
    from rest_framework_api_key.permissions import HasAPIKey
    
    class UserListView(APIView):
        permission_classes = (HasAPIKey,)
        # ...
    
    


    创建和管理 API 密钥:

    API 密钥可以使用djangorestframework-api-key 本身提供的管理面板创建管理和撤销。

    提出授权请求:

    在您的应用程序上启用 API 权限后,客户端可以发出如下授权请求:

    curl -H 'Api-Token: YOUR_API_TOKEN_HERE' -H 'Api-Secret-Key: YOUR_API_SECRET_KEY_HERE' http://localhost:8000/my-resource/
    


    这个答案主要是here 提供的文档的简短版本。您可以查看它的官方文档以获得更详细的说明和示例项目。

    【讨论】:

      【解决方案2】:

      这将适合您正在寻找的 djangorestframework-api-key

      您可以在您的 api 上添加权限,并且 api 密钥比模型中的 CharField 安全存储

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-05-25
        • 2013-10-14
        • 1970-01-01
        • 2015-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多