首页 > 编程语言 >Python API教程:API入门(上)

Python API教程:API入门(上)

时间:2023-09-19 15:03:29浏览次数:56  
标签:教程 请求 Python craft ISS json API name

Python API教程:API入门(上)_服务器

什么是API?


一个API,或被称为应用程序接口,是一个服务器为你提供一个接收或发送数据的代码。API通常用来接收数据。


本文就集中焦点在此话题中。


当我们想从一个API中接收数据,我们需要开始请求。请求可以包含整个Web。例如,你可以浏览博客文章。你的浏览器开始请求我们的Web服务器,会返回整个网页内容。


Python API教程:API入门(上)_json_02


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(http://open-notify.org/),该API可以访问国际空间站的数据。这是一个设计得很好的API,简洁且不需要身份验证。


通常,指定服务器上会提供多个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 API教程:API入门(上)_API_03


Python对JSON文件提供了json的软件,用来解析转换JSON。json软件包是标准库的一部分,无需额外安装即可使用,即可以将列表和字典转换为JSON,也可以将字符转换为列表和字典。


json库有以下两个功能:


json.dumps()


用来接收一个Python对象,并将其转换为字符串;


json.loads()


接收JSON字符串,并将其转换为Python对象。


dumps()函数特别有用,可以用它来打印格式化的字符串,让JSON输出更加容易。如下代码:


import json






def jprint(obj):


    # create a formatted string of the Python JSON object


    text = json.dumps(obj, sort_keys=True, indent=4)


    print(text)






jprint(response.json())






{


    "message": "success",


    "number": 6,


    "people": [


        {


            "craft": "ISS",


            "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"


        }


    ]


}

这样,我们可以更轻松的理解数据结构,可以看到太空中有6个人,名字以字典的方式存在于列表中。

标签:教程,请求,Python,craft,ISS,json,API,name
From: https://blog.51cto.com/u_16256827/7525159

相关文章

  • 软件测试|使用Python打印五子棋棋盘
    简介五子棋是我们传统的益智类游戏,在制作五子棋时,我们需要先将棋盘打印出来,本文就来介绍一下使用Python打印五子棋棋盘。步骤一:打印空棋盘首先,我们需要在Python中定义一个棋盘函数,该函数将打印一个空棋盘。下面是代码示例:defprint_board():foriinrange(15):forji......
  • 电商商品API数据:概念、应用与未来趋势
    一、引言随着电子商务的飞速发展,电商平台间的竞争愈发激烈。为了提供更优质的服务,许多电商平台选择开放其商品API数据,允许第三方开发者利用这些数据创建各种创新的应用。本文将对电商商品API数据的相关概念、应用场景及未来发展趋势进行深入探讨。二、电商商品API数据概述1.电商商......
  • 简单易懂的Linux RedHat安装教程,轻松搭建开发环境
    Linux RedHat是一款流行的操作系统,它拥有强大的稳定性和安全性,是许多企业和开发者首选的操作系统。本文将为你详细介绍如何从零开始安装LinuxRedHat并搭建你的开发环境。1.准备工作在安装LinuxRedHat之前,需要准备好以下物品:-一台电脑-一个USB启动盘-LinuxRedHat......
  • 在线问诊 Python、FastAPI、Neo4j — 创建 检查节点
    目录症状数据创建节点根据不同的症状,会建议做些相对应的检验、检查症状数据examine_data.csv建议值用“”引起来。避免中间有,号造成误识别检查"膝关节核磁""眼睛酸胀""视力""砂眼""辨色力""角膜""眼底"创建节点参考创建药品节点。importloggingfromutils.neo......
  • PyCharm中Directory与Python package的区别
    Directory目录Pythonpackagepython包有一个__init.py__文件__init.py__文件该文件与Python的import机制有关,关乎到哪些.py文件是对外可访问的。在__init.py__文件中定义特殊变量_all_,将要包含的模块赋值给该变量,例如在Image/init.py中定义_all_=['tiff','bmp','j......
  • 无涯教程-JavaScript - SEC函数
    描述SEC函数返回Angular的割线。语法SEC(number)争论Argument描述Required/OptionalNumberNumberistheangleinradiansforwhichyouwantthesecant.RequiredNotes数字的绝对值必须小于2^27如果Angular为度,则将Angular乘以PI()/180或使用RADIANS函......
  • python报错:pyglet.canvas.xlib.NoSuchDisplayException: Cannot connect to "None"
    运行python代码报错:       问题发现:问题其实十分的狗血,这个代码是在服务器上运行的,运行之前其实并没有看具体的代码情况,gitclone下载下来就直接运行了,原来这个代码需要进行图片绘制,说直白些就是需要显示屏,于是解决方法也十分简单,就是换个带桌面的电脑或者使用......
  • Python字符串
    1.字符串的基本操作::::转义符操作:格式化操作:{name1="附件"name2="上课"print("%s的%s"%(name2,name1))}{print(f"{name2}的{name1}")}  2.字符串序列操作::::“容器”加“有序存储"-9-8-7-6-5-4-3 -2 -1  负索引h  e  l  l  o  y u......
  • APIO2017 斑斓之地
    1D6ya。回忆平面图欧拉公式。\[V-E+F=C+1\]\(V\)为点数,\(E\)为边数,\(F\)为面数,\(C\)为连通块数。以下称河流为黑块,土地为白块。将白块看成点,四联通的白块之间连边,不难发现矩阵查询即询问导出子图的连通块数。考虑平面图欧拉公式,那么只需要求出导出子图的点数、面数以及边......
  • 无涯教程-JavaScript - ROUND函数
    描述ROUND函数将数字四舍五入为指定的位数。ROUND是Excel舍入函数之一。语法ROUND(number,num_digits)争论Argument描述Required/OptionalnumberThenumberthatyouwanttoround.Requirednum_digitsThenumberofdigitstowhichyouwanttoroundthenum......