Python API教程:API入门
什么是API?
一个API,或被称为应用程序接口,是一个服务器为你提供一个接收或发送数据的代码。API通常用来接收数据。
本文就集中焦点在此话题中。
当我们想从一个API中接收数据,我们需要开始请求。请求可以包含整个Web。例如,你可以浏览博客文章。你的浏览器开始请求我们的Web服务器,会返回整个网页内容。

API请求工作都遵循类似的路径,你发布一个请求到一个API服务器,它返回给你请求的数据。
如何在Python中发起API请求
在Python中,通常使用通用扩展库来发起API请求,这个库称为:Request库(https://2.python-requests.org/en/master/)。该请求库一分属于Python标准库,但需要我们来安装后才能使用。
一般人们都使用pip来管理Python的包,可以使用如下命令来安装它:
pip install requests
如果你使用conda,可以使用如下命令:
conda install requests
当我们安装好了这个库,在代码中就可以导入它。这是代码中的第一步:
import requests
现在我们已经导入了requests库,现在开始编码。
创建第一个API请求
这是我们第一个API请求,使用GET请求数据,这种方法也是常见的操作。
当我们发起请求,API通常会返回我们返回的编码,告诉是否请求成功。返回代码会立即告诉开发者是否有错误发生。
要创建GET请求,我们通常使用request.get()方法,需要一些URL参数。我们开始给API发起请求,类似于如下格式:
response = requests.get("http://api.open-notify.org/this-api-response-exist/")
get()函数返回一个response对象,可以用response.status_code属性来接收请求的状态码:
print(reponse.status_code)
它会返回404的状态码。程序员们都会知道,这是服务器端告诉我们,请求的文件不存在。
来看常见的API状态码
每次请求服务器都会返回状态码。以下是GET请求时相关的一些代码:
200:一切正常,结果已返回(如果有)。
301:服务器将重定向到其它节点。当切换域名或更改节点名称时,会发生这种情况。
400:服务器认为你发出了错误的请求。当没有正确发送数据时,会发生这种情况。
401:服务器认为您未通过身份验证。许多API都需要登录证书,因此当您没有发送正确的证书来访问API时,就会发生这种情况。
403:您尝试访问的资源被禁止:您没有正确的权限才能查看它。
404:在服务器上找不到要访问的资源。
503:服务器尚未准备好处理请求。
可以看到以4和5开头的都代表某种错误。以2开头的状态码表示成功。
API文档
为了确保人们能够正确发出请求,在使用API时,请务必参考API文档。编写文档会让人们有所畏惧,但使用的越来越多,你会发现它变得越来越容易。
我们将使用Open Notify API(Open Notify - Page Not Found
通常,指定服务器上会提供多个API,这些API每一个都称为节点。我们将使用的第一个节点是:
http://api.open-notify.org/astros.json
它返回有关当前太空中宇航员的数据。
我们使用如下代码,向该API发起GET请求:
response = requests.get("http://api.open-notify.org/astros.json")print(response.status_code)
200
它将返回200代码,告诉我们请求成功了。API文档上告诉我们,它会返回Json数据。我们使用response.json()来接收从API返回的数据。
print(response.json()){'message': 'success', 'people': [{'name': 'Alexey Ovchinin', 'craft': 'ISS'}, {'name': 'Nick Hague', 'craft': 'ISS'}, {'name': 'Christina Koch', 'craft': 'ISS'}, {'name': 'Alexander Skvortsov', 'craft': 'ISS'}, {'name': 'Luca Parmitano', 'craft': 'ISS'}, {'name': 'Andrew Morgan', 'craft': 'ISS'}], 'number': 6}
在Python中使用JSON数据
JSON是API的标准语言。它是一种编码数据结构,可以确保被机器有效读取。
JSON很像Python的列表、字典、字符串和整数,我们可以将JSON视为字符串表示这些对象的组合。

Python对JSON文件提供了json的软件,用来解析转换JSON。json软件包是标准库的一部分,无需额外安装即可使用,即可以将列表和字典转换为JSON,也可以将字符转换为列表和字典。
json库有以下两个功能:
json.dumps()
用来接收一个Python对象,并将其转换为字符串;
json.loads()
接收JSON字符串,并将其转换为Python对象。
相关文章:
Python API教程:API入门
什么是API? 一个API,或被称为应用程序接口,是一个服务器为你提供一个接收或发送数据的代码。API通常用来接收数据。 本文就集中焦点在此话题中。 当我们想从一个API中接收数据,我们需要开始请求。请求可以包含整个Web。例如&am…...
SpringMVC学习笔记
文章目录一、SpringMVC简介1、MVC与三层架构1.1 M1.2 V1.3 C1.4 MVC模式的工作流程1.5 三层架构2、什么是SpringMVC3、SpringMVC的特点二、搭建项目框架1、web项目结构2、创建maven工程,配置pom.xmla>添加web模块b> pom.xml中设置打包方式:warc>…...
Linux学习记录01
文章目录1. Linux基础知识2. Linux常用命令2.1 基础知识2.2 ls命令2.3 cd pwd命令2.4 mkdir2.5 touch、cat、more2.6 cp、mv、rm2.7 通配符、root模式2.8 whicih、find命令2.9 grep、mc、| 管道符2.10 echo、反引号、tail、重定向符2.11 vi、vm文本编辑器1. Linux基础知识 Lin…...
VScode 插件【配置】
写这篇博客的原因: vscode 很久以前的插件,忘记是干什么的了记录 vscode 好用的插件 插件介绍(正文开始) Auto Rename tag 开始/关闭标签内容 同步 Chinese (Simplified) VScode 中文化 CSS Peek 通过 html 代码查找到引用的样式…...
基于 Rainbond 的 Pipeline(流水线)插件
背景 Rainbond 本身具有基于源码构建组件的能力,可以将多种编程语言的代码编译成 Docker 镜像,但是在持续集成的过程中,往往会需要对提交的代码进行静态检查、构建打包以及单元测试。之前由于 Rainbond 并没有 Pipeline 这种可编排的机制&am…...
ASGARD:单细胞导向的药物发现
异质性,或更具体地说,病变组织中的不同的细胞群,是许多复杂疾病治疗失败的主要原因(如癌症、阿尔茨海默症、中风和COVID-19等),也是精准医疗成功的主要障碍。近年来,单细胞技术,特别…...
js-DOM03-事件
事件(Event) - 事件对象 - 当响应函数被调用时,浏览器每次都会将一个事件对象作为实参传递进响应函数中, 这个事件对象中封装了当前事件的相关信息,比如:鼠标的坐标,键盘的按键…...
天梯赛题目练习L1-007--L1-009
1、L1-007 念数字 题目详情 - L1-007 念数字 (pintia.cn) 分数 10 输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。十个数字对应的拼音如下: 0: ling 1: yi 2: er 3: san 4: si 5: wu 6: liu 7: qi 8: ba 9: jiu输入格…...
来吧!接受Kotlin 协程--线程池的7个灵魂拷问
前言 之前有分析过协程里的线程池的原理:Kotlin 协程之线程池探索之旅(与Java线程池PK),当时偏重于整体原理,对于细节之处并没有过多的着墨,后来在实际的使用过程中遇到了些问题,也引发了一些思考,故记录之…...
Dynamic Movement Primitives (DMP) 学习
Dynamic Movement Primitives (DMP) 学习 【知乎】Dynamic Movement Primitives介绍及Python实现与UR5机械臂仿真 1. DMP的建模过程 链接:Dynamic Movement Primitives介绍及Python实现与UR5机械臂仿真 - 知乎 (zhihu.com) 沙漏大佬!!&am…...
2023王道考研数据结构笔记第五章——树
第五章 树 5.1 树的基本概念 树是n(n≥0)个结点的有限集合,n 0时,称为空树。 空树——结点数为0的树 非空树——①有且仅有一个根节点 ②没有后继的结点称为“叶子结点”(或终端结点) ③有后继的结…...
setState函数是异步的还是同步的?
setState函数是异步的还是同步的? 可能很多同学在看到这个问题的时候,甚至搞不清楚这个问题在问什么。 不要慌,我们看一下下面这个例子,首先我们创建一个类组件,这个类组件中,我们定义了state是一个对象,对象中有一个…...
vue3+ts:约定式提交(git husky + gitHooks)
一、背景 Git - githooks Documentation https://github.com/typicode/husky#readme gitHooks: commit-msg_snowli的博客-CSDN博客 之前实践过这个配置,本文在vue3 ts 的项目中,再记录一次。 二、使用 2.1、安装 2.1.1、安装husky pnpm add hus…...
TSP 问题求解的最好方法 LKH
目前可以查到的最好的方法求解TSP问题是 LKH,所以本篇文章介绍如何使用Matlab 调用LKH 参考文档:用matlab调用迄今为止最强悍的求解旅行商(TSP)的算法-LKH算法_wx6333e948c3602的技术博客_51CTO博客 【LKH算法体验】用matlab调用…...
RocketMQ5.1控制台的安装与启动
RocketMQ控制台的安装与启动下载修改配置开放端口号重启防火墙添加依赖编译 rocketmq-dashboard运行 rocketmq-dashboard本地访问rocketmq无法发送消息失败问题。connect to <公网ip:10911> failed下载 下载地址 修改配置 修改其src/main/resources中…...
【java基础】类型擦除、桥方法、泛型代码和虚拟机
文章目录基础说明类型擦除无限定有限定转换泛型表达式方法类型擦除(桥方法)关于重载的一些说明总结基础说明 虚拟机没有泛型类型对象一所有对象都属于普通类。在泛型实现的早期版本中,甚至能够将使用泛型的程序编译为在1.0虚拟机上运行的类文…...
十家公司有九家问过的软件测试面试题,最后一题我猜你肯定不会
最近面试了一些测试方面相关的岗位,通过牛客等途径也看了不少的面经,发现大部分人面试题目都有很多相似点,结合自己的一些面试经历,现在分享一些我面试中碰到过的问题 常见的面试题 1、jmeter的加密参数如何入参? 2…...
C++核心知识(三)—— 静态成员(变量、函数、const成员)、面向对象模型(this指针、常函数、常对象)、友元、数组类、单例模式
【上一篇】C核心知识(二)—— 类和对象(类的封装)、对象的构造和析构(浅拷贝、深拷贝、explicit、动态分配内存)1. 静态成员在类定义中,它的成员(包括成员变量和成员函数),这些成员可以用关键字static声明为…...
RocketMQ【3】Rocketmq集群部署(多master多slave)异步复制
系列文章目录 RocketMQ【1】linux安装配置Rocketmq(单机版) RocketMQ【2】Rocketmq控制台安装启动(单机版) 文章目录系列文章目录一、异步复制的优缺点1、优点2、缺点二、架构1、架构图2、介绍3、机器配置三、配置1、master节点配…...
魏玛早春 木心
<font face“黑体” color#CD5C5C size6 魏玛早春 木心 温带每个季节之初 总有神圣气象恬漠地 剀切地透露在风中 冬天行将退尽 春寒嫩生生 料峭而滋润 漾起离合纷纷的私淑记忆 日复一日 默认季节的更替 以春的正式最为谨慎隆重 如果骤尔明暖 鸟雀疏狂飞鸣 必定会吝悔似的剧…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
