如何在Django中隐藏WebAPI URL并实现美观URL映射与分流
在Django中实现自定义域名的URL转发与分流需求
1. 配置Django URL路由
核心是通过路由顺序区分不同请求:将根路径、/otherapp的路由放在前面,短码路由放在最后(避免误匹配)。
在项目的urls.py中添加如下配置:
from django.urls import path from . import views urlpatterns = [ # 处理根路径请求,返回自身Web服务器内容 path('', views.home_view, name='home'), # 处理/otherapp路径请求,返回自身Web服务器内容 path('otherapp/', views.otherapp_view, name='otherapp'), # 捕获短码参数,最后匹配避免干扰其他路由 path('<str:short_code>/', views.redirect_to_api, name='redirect_shortcode'), ]
2. 编写视图函数处理逻辑
- 根路径和
/otherapp的视图返回自身Web服务的页面; - 短码视图负责拼接API服务器地址并完成重定向。
在views.py中实现:
from django.shortcuts import redirect, render def home_view(request): # 返回你的首页模板或内容 return render(request, 'home.html') def otherapp_view(request): # 返回/otherapp对应的模板或内容 return render(request, 'otherapp.html') def redirect_to_api(request, short_code): # 拼接目标API服务器的完整地址 target_api_url = f"https://my-backend-api-server.us-central1.run.app/redirectapp/redirect/{short_code}" # 使用301永久重定向(适合短链接长期固定指向的场景;若需临时变更用302) return redirect(target_api_url, permanent=True)
3. 关键注意事项
- 路由顺序优先级:短码路由必须放在最后,否则会将
/otherapp这类路径误判为短码参数; - 重定向类型选择:301重定向会让浏览器缓存映射关系,减少后续请求开销;若短码对应的目标地址可能频繁变更,改用302临时重定向;
- 域名基础配置:确保
www.mydomain123.com的DNS解析指向运行Django的服务器IP,同时配置好HTTPS证书(如Let's Encrypt)保证访问安全。
内容的提问来源于stack exchange,提问作者Gulzar
相关产品推荐
相关产品推荐

