[英]Sending a URL in a GET request to a Python server on Google App Engine
[英]Getting the Server URL in Google App Engine using python
如何让App Engine生成当前正在运行的服务器的URL?
如果应用程序在开发服务器上运行,则应返回
http://localhost:8080/
如果该应用程序正在Google的服务器上运行,则应返回
http://application-name.appspot.com
您可以通过self.request.url
从Webapp处理程序中获取用于发出当前请求的URL,也可以使用self.request.environ
字典将其组合在一起(您可以在WebOb文档中阅读-请求从webob继承)
您不能“获取服务器的URL”本身,因为可以使用许多URL指向同一实例。
如果您的目的只是发现您是否正在开发或生产中,请使用:
'Development' in os.environ['SERVER_SOFTWARE']
这是一个替代答案。
from google.appengine.api import app_identity
server_url = app_identity.get_default_version_hostname()
在开发应用服务器上,这将显示:
本地主机:8080
并在appengine上
your_app_id.appspot.com
如果您使用webapp2作为框架,则很可能已经在Web应用程序中使用了URI路由。
http://webapp2.readthedocs.io/en/latest/guide/routing.html
app = webapp2.WSGIApplication([
webapp2.Route('/', handler=HomeHandler, name='home'),
])
使用webapp2.uri_for()
构建URI时,只需传递_full=True
属性即可根据当前运行时环境生成包括当前域,端口和协议的绝对URI。
uri = uri_for('home')
# /
uri = uri_for('home', _full=True)
# http://localhost:8080/
# http://application-name.appspot.com/
# https://application-name.appspot.com/
# http://your-custom-domain.com/
此函数可以在您的Python代码中使用,也可以直接从模板引擎中使用(如果您注册了它)-非常方便。
检查API参考中的webapp2.Router.build() ,以获取有关用于构建URI的参数的完整说明。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.