在 Python 中使用令牌进行 API 调用

news2024/9/20 22:34:13

文章目录

    • 在 Python 中进行不带令牌的 API 调用
    • 在 Python 中使用令牌调用 API
    • 总结


当我们第一次遇到如何在 Python 中调用 API 的问题时,我们的第一个想法是,“什么是 API?”。

API是应用程序编程接口的首字母缩写; 它允许您访问软件的数据而不必访问它。 例如,如果调用加密货币 API,我们将直接在我们的应用程序中访问加密货币价格,而无需访问加密货币网站或应用程序。

当我们在 Python 中调用 API 时,我们可以使用令牌来调用,如果没有令牌,当我们在没有令牌的情况下调用 API 时,API 是不安全的,但是在使用令牌的情况下,它可以用作密码,并且 访问令牌的用户名。

我们将查看这两种情况的示例。


在 Python 中进行不带令牌的 API 调用

要启动,我们需要先安装一个 Python 库来处理这个请求; 在终端内,输入 pip install requests,创建一个新文件并将其命名为 new.py。 然后我们将输入这些代码:

new.py:

import requests
import json

class MakeApiCall:

    def get_data(self, api):
        response = requests.get(f"{api}")
        if response.status_code == 200:
            print("call successful")
            self.formatted_print(response.json())
        else:
            print(
                f"error {response.status_code} in fetching request")

    def get_user_data(self, api, parameters):
        response = requests.get(f"{api}", params=parameters)
        if response.status_code == 200:
            print("data fetch success")
            self.formatted_print(response.json())
        else:
            print(
                f"error {response.status_code} in fetching request")

    def formatted_print(self, obj):
        text = json.dumps(obj, sort_keys=True, indent=4)
        print(text)

    def __init__(self, api):
        parameters = {
            "site": "stackoverflow"
        }
        self.get_user_data(api, parameters)

if __name__ == "__main__":
    api_call = MakeApiCall("https://api.stackexchange.com/2.2/info")

第一个片段处理调用; 一旦调用成功,打印结果,然后在成功获取数据后,打印结果; 否则,它会打印错误,然后它应该打印从 API 获取的数据。

然后最后一行是我们从中获取数据的 API 链接。 单击运行后,稍等片刻,您将在终端中看到获取的数据。

在 Python 中进行不带令牌的 API 调用


在 Python 中使用令牌调用 API

正如我们提到的,使用令牌制作 API 意味着我们与我们尝试访问的 API 建立了安全连接。 我们需要从 pip 安装一些依赖项。

我们首先需要生成一个令牌并为此部署 jwt。 在终端内,键入 pip install jwt。

打开一个新文件,将其命名为 jwt.py 并输入以下代码以生成令牌。

jwt.py:

import jwt
encoded_jwt = jwt.encode({"some": "payload"}, "secret", algorithm="HS256")
print(encoded_jwt)

接下来,我们将安装 requests 来处理 API 调用请求。 我们将在终端内输入 pip install 请求。

然后我们创建一个文件,将其命名为 new.py 并输入以下代码:

new.py:

import requests

BASE_URL = 'https://www.boredapi.com/api/activity'
token = "your jwt token"

headers = {'Authorization': "Bearer {}".format(token)}
auth_response = requests.get(BASE_URL, headers=headers)

print(auth_response.json())

单击运行,您将在终端中看到从 API 中获取的数据。

在 Python 中使用令牌调用 API


总结

理想情况下,当我们想做一个更严肃的项目时,我们应该使用令牌调用 API 以增加保护。 虽然 jwt 提供了一种生成令牌的直接方法,但我们还可以通过其他方式生成令牌。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/660011.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【面试】Java并发编程

ThreadLocal ThreadLocal 为什么会导致内存泄漏 hreadLocalMap使用ThreadLocal的弱引用作为key,如果一个ThreadLocal不存在外部强引用时,Key(ThreadLocal)势必会被GC回收,这样就会导致ThreadLocalMap中key为null, 而value还存在着…

15-ajax、实现过程、封装

定义 🍿🍿🍿Async Javascript and XML 异步的JavaScript 和XML,是一种创建交互式网页应用的网页开发技术,可以在不重新加载整个网页的情况下,与服务器交换数据,并且更新部分网页 离不开 XMLH…

【C语言】万字教学,带你分步实现扫雷游戏(内含递归函数解析),剑指扫雷,一篇足矣

君兮_的个人主页 勤时当勉励 岁月不待人 C/C 游戏开发 带你轻松玩转扫雷游戏 前言一. 扫雷游戏的介绍以及内部需要实现的功能解析1.什么是扫雷游戏2.扫雷游戏所需的几个步骤 二.扫雷游戏的具体实现1.打印菜单菜单上的选择功能 2.初始化以及打印棋盘初始化函数InitBoard打印棋…

如何使用测试驱动开发(TDD)来实现100%的测试覆盖率?

本文以 DDM 为例,简单地介绍一下如何用测试驱动开发(TDD, Test-Driven Development)的方法来驱动出这个函数库。 本文以DDM为例,简单地介绍一下如何用测试驱动开发(TDD, Test-Driven Development)的方法来驱动出这个函数库。 DDM简介 DDM是…

vue-cli3的安装和项目创建

一 vue-cli3的安装 (注意:vue-cli3在安装之前,需要先删除旧版本,即vue-cli2) cnpm i -g vue/cli vue-cli3的卸载:cnpm uninstall -g vue/cli 然后用命令“vue -V”查看是否删除vue,如果没有删…

kafka原理架构深入

目录 1. 下载安装2. 命令行命令3. 概述3.1 定义3.2 基本架构 4. 架构深入4.1 生产者4.1.1 分区4.1.2 数据可靠性保证4.1.3 Exactly Once语义4.1.4 发送消息流程 4.2 broker4.2.1 日志结构4.2.2 存储策略4.2.3 Controller & ZooKeeper4.2.4 高效读写数据 4.3 消费者4.3.1 消…

模型-视图-控制器模式(MVC模式,10种常见体系架构模式之一)

、简介: 架构模式是一个通用的、可重用的解决方案,用于在给定上下文中的软件体系结构中经常出现的问题。架构模式与软件设计模式类似,但具有更广泛的范围。 模型-视图-控制器模式,也称为MVC模式。是软件工程中的一种软件架构模式&…

Word模板引擎poi-tl

文章目录 ◆ 方案对比◆ 版本◆ 特性◆ 模板◆ 数据◆ 输出◆ 数据模型◆ 标签1. 文本2. 图片3. 表格4. 列表5. 嵌套6. 区块对 ◆ SpingEL2. 单系列图标3. 多系列图标4. 组合图表 ◆ 配置1. 标签前后缀2. 标签类型3. 标签匹配值4. 标签值计算5. SpringEL6. 数据模型序列化7. 错…

设计模式之抽象工厂笔记

设计模式之抽象工厂模式笔记 说明Abstract Factory(抽象工厂)目录UML抽象工厂示例类图甜品抽象类甜品提拉米苏类甜品抹茶慕斯类 咖啡抽象类美式咖啡类拿铁咖啡类 甜品工厂接口美式风味的甜品工厂意大利风味的甜品工厂 测试类模式扩展 说明 记录下学习设计模式-抽象工厂模式的写…

吴恩达471机器学习入门课程3第1周——K-means

K-means 聚类 1 - 实现 K-means1.1 找到最近的质心练习11.2 计算质心均值练习2 2 - K-means在样本数据集上的应用3 - 随机初始化4 - K-means图像压缩4.1 数据集可视化处理数据 4.2图像像素上的 K-mean4.3 压缩图片 实现 K-means 算法,并将其用于图像压缩。 您将从一…

Autoware 跑 Demo(踩坑指南)

Autoware 跑 Demo(踩坑指南) 网上的博客和官方的教程,几乎都是一样的,但实际上跑不起来 Autoware 1.12学习整理–01–运行rosbag示例 Autoware入门学习(三)——Autoware软件功能使用介绍(1/3&a…

MySQL的IF(exp1, exp2, exp3)、IFNULL(exp1, exp2)函数的用法

本章主要是讲解一下mysql的常用方法if()和ifnull()的使用 1、if(exp1, exp2, exp3) 如果表达式exp1成立,则返回的结果是表达式exp2,否则返回的是表达式exp3 案例:现在有一个星印类型表xingyin_type 通过这个表来介绍一下这个函数的使用 sel…

轻松掌握Seata源码分析之AT模式整体大纲流程跟踪

如下为订单和库存的实例代码,在事务开启处即订单服务处使用GlobalTransactional即可。当添加了异常代码使订单无法加一,这时减库存服务也会回滚,根据的就是undolog。回滚完undolog记录会被释放删除。 AT模式整体大纲流程跟踪如下&#xff1…

第37步 深度学习图像识别:CNN建模(Tensorflow)

基于WIN10的64位系统演示 一、写在前面 (1)深度学习图像识别的原理 我们思考一下,当你看到一张椅子的图片,你的大脑会告诉你这是个椅子,但你有没有想过:为什么你知道这是椅子,你的大脑是怎么…

【Spring Cloud 系列】Eureka控制台参数说明

【Spring Cloud 系列】Eureka控制台参数说明 前面我们在《Eureka使用详解》一文中介绍了Eureka的使用。本文将介绍Eureka控制板面各参数: System Status 编号名称说明1Environment环境,默认为test,该参数在实际使用过程中,可以不…

单目标应用:Tiki-taka算法(TTA)求解太阳能光伏模型MATLAB

一、四种太阳能光伏模型 随着石油、煤炭、天然气等不可再生能源的快速枯竭,以及空气环境的严重污染,可持续、无污染的能源供应成为热点和关键问题。风能、太阳能、水能、潮汐能等可再生能源的开发利用,必然在未来的可持续发展中发挥至关重要…

德国企业数据统计分析【1】-基于pandas的GENESIS ONLINE数据简单统计与柱状图可视化

引言: 德国拥有很多年销售额不超过50亿美元的中小企业,但他们却是某些细分制造、工业领域的翘楚。并且隐身于大众视野之外。此处,隐形冠军指的就是细分领域行业处于绝对领先地位并且年销售额不超过50亿美元的中小企业。这一概念是由德国著名中小企业管理学家赫尔曼西蒙创立的…

电脑开机密码忘记了怎么办?使用优盘重装系统

大家可以在网上搜索,其他方法。尽量找回密码。我这是因为已经很久没有使用这个电脑,而且c盘也没有怎么重要资料的情况下。我才选择重装系统的。 请慎重。 前期准备: 1、准备一个4G以上的U盘 2、备份U盘重要文件,制作过程中会格式…

「深度学习之优化算法」(五)差分进化算法

1. 差分进化算法简介 (以下描述,均不是学术用语,仅供大家快乐的阅读) 差分进化算法(Differential Evolution Algorithm,DE)是一种基于群体的进化算法,它模拟了群体中的个体的合作与竞…

黑马点评短信登录功能

一、基于session实现短信登录 1、发送短信验证码 流程图如下: 1、实现UserController下的sendCode方法: /*** 发送手机验证码*/PostMapping("/code")public Result sendCode(RequestParam("phone") String phone, HttpSession se…