首页 > 其他分享 >02.接口路由技术

02.接口路由技术

时间:2023-11-18 23:55:44浏览次数:34  
标签:02 URL route 接口 Flask user app 路由

接口路由技术

什么是路由

路由是将 URL 地址与应用程序中的函数相映射的过程。当用户在浏览器中输入特定的 URL 地址时,Flask 会调用与该地址相匹配的函数并返回相应的结果。

路由的应用场景

在 Web 应用程序都通过路由技术使用 URL 链接来控制网页显示的内容,只要知道 URL 链接,即使没有主页导航也可以直接访问所需网页。

通过 Flask 实现路由

路由类型 实现方式
基本路由 @app.route('/')
动态路由 @app.route('/user/<username>')
限定类型 @app.route('/post/<int:post_id>')

 

 

        在 Flask 中,可以使用 @app.route() 装饰器来定义路由。路由决定了用户请求的 URL 路径与对应的视图函数之间的关系。  

基本路由

基本路由定义方式为:

from flask import Flask

# 创建 Flask 应用程序实例
app = Flask(__name__)

# 定义基本路由
@app.route("/")
def index():
return "Home Page"

@app.route("/about")
def about():
return "About Page"

# 运行应用程序
if __name__ == '__main__':
app.run()

在上述示例中,@app.route('/') 和 @app.route('/about') 分别定义了根路径 '/' 和 /about 的路由。当用户访问这些路径时,Flask 会调用对应的视图函数并返回相应的内容。
@app.route('/') 访问地址为 http://127.0.0.1:5000/@app.route('/about') 访问地址为 http://127.0.0.1:5000/about

动态路由

URL 中某些地方存在可变部分,为动态的 URL,Flask 支持这种动态 URL。

动态路由是通过尖括号 <> 实现的,放在尖括号里面的部分为动态部分,即在装饰器 route 传入 <> 部分,定义视图函数时,将该 <> 里面的内容作为参数传入到函数里面即可。

比如路由 /user/Harry 后面想要根据不同的用户名,返回不同的数据。这种情况可以用变量来代替名字部分:@app.route('/user/<username>')

这时 username 传入不同的值时,比如依次传入 Harry、Ron、Hermione,那么对应的路由就变为:/user/Harry/user/Ron/user/Hermione

# 定义动态路由
@app.route("/user/<username>")
def user_info(username):
return f"User {username} is select info."

访问:http://127.0.0.1:5000/user/Ron

查看服务端日志,会有一条返回信息:User Ron is select info.

限定类型

如果希望限定输入的动态字段的类型,可以使用 <类型:变量名> 来实现,例如如果希望某个字段只能是整数,那么可以写为 /user/<int:user_id>

# 限定类型的动态路由
# 类型限定为整型
@app.route("/user/<int:user_id>")
def user_id(user_id):
# 展示给定的用户 ID,ID 为整型
return f"User ID is {user_id}"

# 类型限定为 path(可以包含 /)
@app.route('/path/<path:sub_path>')
def show_subpath(sub_path):
# 展示 path 后的子路由
return f'Subpath is {sub_path}'

Flask 支持在路由上使用的类型有 int、float、string、path。path 类型是字符串的一种,不同的是它可以包含正斜线。

路由规则

Flask 的 URL 规则基于 Werkzeug 的路由模块。可以确保形成的 URL 是唯一的,并且基于 Apache 规定的先例。

@app.route('/about')
def about():
return 'About Page'

@app.route('/hogwarts/')
def hello_hogwarts():
return 'Hello Hogwarts'

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

这两个路由定义的例子看起来类似,其实是不一样的。

在第二个例子中,路由的尾部使用斜杠 (/)。因此,它成为一个规范的URL。这时 Flask 会自动进行重定向。当在浏览器的地址栏中不输入 / 时,会自动在尾部加上一个斜杠。也就是在浏览器的地址栏中输入 / 和不输入 /的效果是一样的。

而第一个例子中,路由的尾部没有 /。那么访问的时候,在浏览器的地址栏中不能输入 /,否则会产生 “Not Found” 的错误。这样可以保持 URL 唯一。

标签:02,URL,route,接口,Flask,user,app,路由
From: https://www.cnblogs.com/csfsz/p/17841499.html

相关文章

  • misc 2023.11.13-11.19
    1.a.将其拖入010中,发现有一串二进制b.我们考虑是不是什么解密,将二进制转换为16进制再转为asciic.得到flag{koekj3s} 2.a.暴力破解,解压文件b.解密之后发现一个奇怪的玩意,经过资料搜索,这是brainfuck代码c.使用解密工具: 3.a.用wireshark打开文件,过滤出HTTP数据包......
  • 【专题】2022年中国跨境电商行业研究报告PDF合集分享(附原数据表)
    报告链接:http://tecdat.cn/?p=32044近年来,我国的跨境电子商务发展迅速,在过去五年中,其贸易额增长率达到了16.2%,已经成为稳定对外贸易的一支重要力量。阅读原文,获取专题报告合集全文,解锁文末52份跨境电商行业相关报告。一方面,随着跨境电子商务的发展,跨境电子商务的监管政策得到了......
  • Spring Cloud Gateway路由加载过程
    SpringCloud2021.0.5相关类先认识下相关的几个类RoutePredicateFactory,断言工厂,用于创建具体的断言。GatewayFilterFactory,过滤器工厂,用于创建具体的过滤器。Predicate,断言接口。GatewayFilter,过滤器接口。RouteDefinition,路由定义对象,在yml里配置的路由规则其实就是......
  • 2023-2024-1 20231405《计算机基础与程序设计》第八周学习总结
    2023-2024-120231405《计算机基础与程序设计》第八周学习总结作业信息作业属于哪个课程https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP作业要求在哪里https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP/homework/13009作业的目标自学《计算......
  • 2023.11.18 日记
    今天noip打烂了。具体的都在文章里写过了。父亲几年来一直在备考,CSP-S2的那天他刚好考完。最近他轻松了很多。我们家也轻松了好多。所以最近都是他接送我。几个月前他听说我精神状态不佳,他说,要保持一个很严格的生物钟。这正是我所希冀的。他一直保持着很好的生活习惯,他讨......
  • CSP 2023 与 NOIP 2023 游记
    目录9.16-CSP-S第一轮10.18-考前放松?10.21-CSP-S第二轮11.15-考前放松?11.17-考前放松?11.18-NOIP20239.16-CSP-S第一轮记忆丢失。出成绩是90+多少来着。反正在队线内,赢!10.18-考前放松?CSP前咋还出去玩的,曹好抽象。边爬山边哼歌真的很累。10.21-CSP-......
  • 2023.11.18——每日总结
    学习所花时间(包括上课):9h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习;我了解到的知识点:1.mybatis明日计划:学习......
  • 11.17~11.18暨noip2023游寄
    11.17我们DZ不负众望又干了点nt事,但是为了按时间顺序记叙,所以说放到最后再讲上午平常的起床+吃饭,然后就发手机啥的,坐大巴去德州东再坐会高铁去秦皇岛,这些简单记一下就行了重点来了先拜谢一下__int_R__在大巴上的时候tkth拉int_R回粥,然后他在自己号整了几抽出了个6星,又在tkth......
  • crypto 2023.11.13-11.19
    1.a.直接用python跑。b.得到flag,此flag为16进制,需要转换为字符串。c.得到flag 2.a.直接爆破猜解:b.得到flag 3.a.直接暴力猜解b.得到flag 4.a.直接使用工具解码b.得到flag 5.a.用python工具解密b.得到10进制的flag,将其转换为16进制,再转换为字符串......
  • NOIP 2023 游记
    Day\(-6\)直接发烧,喜提\(3\)天小短假。Day\(-2\)回学校体艺节,接着摆烂。Day\(0\)\(13:00\)出发,前往中山南朗,\(广佛新干线\to\text{S47广佛江珠高速}\to\text{S5广台高速}\to\text{S43广珠西线}\to\text{G0425广澳高速}\)。\(16:00\)到达,入住希尔顿欢朋酒店(学校还挺有......