如何用Flask构建API

你有没有想过你最喜欢的应用是如何互相通信的?点击手机上的按钮是如何立刻连接到一个信息的世界的?背后的魔力就是我们称之为API的东西,它代表着应用程序编程接口。它就像一个信使,接受请求,告诉系统你想要什么,然后带回响应。听起来很酷,对吧?

computer and desktop 今天,我们将学习如何使用Flask构建你自己的API,Flask是一个非常简单且轻量的Python Web框架。别担心,如果你觉得听起来有些复杂——我们会一步一步地以有趣且简单的方式来拆解。

第1步:准备工作

在我们开始之前,你需要在VS code中安装以下工具:

  • 安装Python(如果你还没有安装,可以从Python官网获取!)。
  • 安装Flask库(在终端或命令提示符中输入 pip install flask 安装)。

就这些!我们准备好开始了。

第2步:什么是Flask?

Flask就像是一个小型工具箱,用于构建Web应用和API。它不像其他框架那样庞大笨重,但非常适合简单的项目,而且容易上手!可以把它想象成一个小餐馆的厨房,在那里你可以快速做出美味的菜肴。🧑‍🍳

第3步:设置一个简单的API

让我们来构建一个可以接收请求并返回响应的API。以下是基本结构:

打开你喜欢的代码编辑器(VS Code、Sublime,或者你如果很勇敢,也可以使用记事本)。 创建一个新文件并命名为 app.py。 以下是你需要的代码:

from flask import Flask, jsonify

app = Flask(__name__)

# 创建一个简单的API端点
@app.route('/hello', methods=['GET'])
def hello_world():
    return jsonify({"message": "Hello, World!"})

if __name__ == '__main__':
    app.run(debug=True)

让我们分解一下这个代码:

  • 导入Flask和jsonify: 我们需要Flask来构建Web应用,而jsonify用于将数据以JSON格式返回(这是一种计算机喜欢用来交流的格式)。
  • @app.route(‘/hello’, methods=[‘GET’]): 这里我们告诉Flask我们希望响应的URL是哪里(在本例中是/hello)。当有人访问这个URL时,他们会收到来自我们API的消息。
  • return jsonify({"message": "Hello, World!"}): 这将以JSON格式发送一个响应,内容是“Hello, World!”这样其他系统也能理解。

第4步:运行你的API

要运行这个API,打开终端,导航到你保存 app.py 文件的位置,然后输入:

python app.py

Boom!你的第一个API就在本地机器上运行了。打开浏览器,访问 http://127.0.0.1:5000/hello,你会看到魔法发生。🎉 你将看到类似这样的信息: {"message": "Hello, World!"}

第5步:让你的API做更多事情

假设你想让你的API返回一组水果列表。你可以这样做:

from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/fruits', methods=['GET'])
def get_fruits():
    fruits = ['apple', 'banana', 'cherry', 'date', 'elderberry']
    return jsonify(fruits)

if __name__ == '__main__':
    app.run(debug=True)

现在,如果你访问 http://127.0.0.1:5000/fruits,你将得到一个JSON格式的水果列表。很简单,对吧?

第6步:处理用户请求(动态路由)

让我们进一步提升!如果你想创建一个API,根据用户输入提供特定的信息呢?例如,如果有人想要了解某种水果的详细信息,我们可以使用动态路由来实现这一点。

具体方法如下:

from flask import Flask, jsonify

app = Flask(__name__)

fruits_info = {
    'apple': 'A sweet red fruit.',
    'banana': 'A long yellow fruit.',
    'cherry': 'A small red fruit.'
}

@app.route('/fruits/<fruit_name>', methods=['GET'])
def get_fruit_info(fruit_name):
    info = fruits_info.get(fruit_name, "Fruit not found!")
    return jsonify({"fruit": fruit_name, "info": info})

if __name__ == '__main__':
    app.run(debug=True)

现在,如果你访问 http://127.0.0.1:5000/fruits/apple,你将看到“这是一个甜美的红色水果。如果你请求的水果不在列表中,它会告诉你,水果未找到!”

第7步:总结与下一步

恭喜你!🎉 你已经用Flask构建了你的第一个API。现在你知道如何:

  • 使用Flask设置一个基本的API。
  • 以JSON格式返回数据。
  • 使用动态路由使API更加灵活。

现在,你已经成功地用Flask构建并本地测试了第一个API,接下来要确保在处理真实世界的场景和外部客户端时,一切都能正常工作。

编码快乐!

全部评论

相关推荐

TCL前端笔试题目:以下是一些&nbsp;TCL&nbsp;华星前端笔试题目:以下关于&nbsp;HTML5&nbsp;语义化标签的说法,错误的是?在&nbsp;CSS&nbsp;中,以下哪个属性用于设置元素的定位方式?以下哪种不是前端性能优化的常见方法?当使用&nbsp;Flex&nbsp;布局时,以下哪个属性用于设置子元素在主轴上的对齐方式?简答题请简述&nbsp;HTML、CSS&nbsp;和&nbsp;JavaScript&nbsp;在前端开发中的作用分别是什么,以及它们之间的关系。解释一下什么是浏览器的回流(reflow)和重绘(repaint),并说明如何避免或减少它们对性能的影响。列举三种你熟悉的前端框架,并简要说明它们的特点和适用场景。如何实现一个响应式布局,使其在不同屏幕尺寸的设备上都能有良好的显示效果?请列举至少两种常用的技术或方法。描述一下&nbsp;JavaScript&nbsp;中事件冒泡和事件捕获的概念,并说明如何阻止事件冒泡。编程题请使用&nbsp;HTML&nbsp;和&nbsp;CSS&nbsp;创建一个简单的导航栏,要求包含至少三个导航项,并且当鼠标悬停在导航项上时,有相应的样式变化。编写一个&nbsp;JavaScript&nbsp;函数,实现对一个数组进行去重操作,返回去重后的新数组。用&nbsp;HTML、CSS&nbsp;和&nbsp;JavaScript&nbsp;实现一个简单的轮播图效果,要求可以自动播放,并且用户能够手动切换图片。TCL实业2025届春招正式启动!【公司简介】✅聚焦智能终端业务,主要涵盖显示、智能家电、创新业务及家庭互联网等全品类智能消费电子产品及服务✅业务遍及160多个国家和地区,全球有20个智能制造基地,2023年,TCL实业实现营业总收入1203.2亿元【招聘岗位】研发技术类、产品设计类、市场营销类、智能制造类、供应链类、财务金融类、综合管理类(TCL实业和TCL华星共用招聘系统,两家子公司一共只能投递两个岗位)【工作地点】深圳、惠州、中山、上海、武汉、西安等全国各地及海外城市TCL实业【内推链接】https://wecruit.hotjob.cn/SU6491506a2f9d24316e91b81b/mc/position/campus?acotycoCode=pchbbd&amp;amp;amp;recruitType=1&amp;amp;amp;isLimitShowPostScope=1【内推码】pchbbd(🌟内推投递,简历优先筛选,面试流程加快,TCL期待你的加入!)大家投递完可以在评论区打上姓名缩写+岗位,我来确认有没有内推成功喽 #校招#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#内推#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#内推码#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#秋招#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#tcl#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
点赞 评论 收藏
分享
03-15 21:40
已编辑
大连民族大学 前端工程师
刚提交笔试试卷,只能说是身心俱疲。(小弟我是前端)前18道选择是基础,19,20选择题是vue或者react,最后三道代码题。代码题我还记得,第一题是有2^n个人参加跑步比赛,然后每个人都要参加n场比赛,两个两个比,赢得所有人一组接着比,问xx最后第几名,大概这个意思。举个例子:n=4,竞争1~16名,第一场赢了,竞争1~8名,第二场输了,竞争5~8名,第三场赢了,竞争5~6名,第四场输了,最终第6名。输入:41&nbsp;0&nbsp;1&nbsp;0输出:6……………………………………………………第二题是给你一个大小为n的数组,定义它的价值为最大值减去最小值,给你一个机会删掉任意一个数,在所有的n-1个序列中找出最小的价值。有T组数据。输入:1(这是T)4(这是n)1&nbsp;3&nbsp;3&nbsp;7输出:2分析:删除7,剩余序列【1&nbsp;3&nbsp;3】,价值为2.输入:241&nbsp;3&nbsp;3&nbsp;721&nbsp;10000输出:20……………………………………第三题,给你初始圆的半径r和阶数n,第一阶是四分之三的圆涂黑,第二阶在第一阶内画最大的圆,四分之三涂白,以此类推,老弟把图给你们画出来了,最后要算黑色面积。……………………………………选择会做的没几个,代码一三都100%了,第二题实在不知道错哪了,14%提交了,希望大佬给我留个第二题的思路图四最小的圆黑白色反了,大佬们别介意
查看3道真题和解析 投递京东等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务