赞
踩
做为一个程序员可能在学习技术,了解行业新动态,解决问题时经常需要阅读英文的内容;而像我这样的英文小白就只能借助翻译工具才能理解个大概;不禁经常感慨,英文对学习计算机相关知识太重要了!最近发现IBM的云平台Blumemix,并且提供语言翻译的服务,感觉不错,就拿来研究学习一下;这里就分享一下我的研究学习过程,如何使用Python调用REST API打造自己的在线翻译工具,并演示如何把它发布到云平台上,让每个人都可以通过网络访问使用它。
您可以通过点击效果图片的链接访问它。
对 HTML(超文本标记语言)的基本了解;
对CSS (层叠样式表)的基本了解;
对JavaScript(一种直译式脚本语言)的基本了解;
对Python 语言的基本了解;
对Python Web编程的基本了解;
我提供了所有必要代码,但对这些技术的基本了解有助于您理解有关的细节。
获取服务信息
进入自己的应用程序》概述页面,找到已经添加的服务,点击“显示凭证”,可以查看服务的具体信息:
在浏览器中访问服务URL如下图:
有关开发环境搭建的细节,请参考下面的文章:
《Python入门》Windows 7下Python Web开发环境搭建笔记
《Python入门》第一个Python Web程序——简单的Web服务器
进入您的应用程序,点击左侧的开始编码,在右侧点击“下载入门模板代码”。
1、将下载的入门模板代码解压到一个目录,打开命令行窗口,切换到这个目录下
2、执行命令:python server.py
3、在浏览器中访问:http://localhost:8000/
前台主要AJAX代码:调用后台的翻译的处理程序,实现用户交互
后台主要代码:server.py,与翻译服务Web Service交互
- import os #Python的标准库中的os模块包含普遍的操作系统功能
- import re #引入正则表达式对象
- import urllib #用于对URL进行编解码
- import sys #提供了许多函数和变量来处理 Python 运行时环境的不同部分.
- import urllib2 #用于模拟HTTP/HTTPS请求
-
- #调试函数,用于输出对象的属性及属性值
- def getAllAttrs(obj):
- strAttrs = ''
- for o in dir(obj):
- strAttrs =strAttrs + o + ' := ' + str(getattr(obj,o)) + '<br />'
-
- return strAttrs;
-
- try:
- from SimpleHTTPServer import SimpleHTTPRequestHandler as Handler
- from SocketServer import TCPServer as Server
- except ImportError:
- from http.server import SimpleHTTPRequestHandler as Handler
- from http.server import HTTPServer as Server
-
-
- #自定义处理程序,用于处理HTTP请求
- class TransHTTPHandler(Handler):
- #处理GET请求
- def do_GET(self):
- #页面输出模板字符串
- templateStr = '<html><head><title>pytrans</title></head><body>%s</body></html>'
- # 将正则表达式编译成Pattern对象
- pattern = re.compile(r'/trans\?txt\=(.*)')
- # 使用Pattern匹配文本,获得匹配结果,无法匹配时将返回None
- match = pattern.match(self.path)
-
- if match:
- params = { 'source':'en', 'target':'es', 'text':match.group(1) }
- surl = 'https://gateway.watsonplatform.net/language-translation/api/v2/translate?' + urllib.urlencode(params)
- resContent = ''
-
- try:
- passman = urllib2.HTTPPasswordMgrWithDefaultRealm() #创建域验证对象
- passman.add_password(None, surl, "翻译服务用户名", "密码") #设置域地址,用户名及密码
- auth_handler = urllib2.HTTPBasicAuthHandler(passman) #生成处理与远程主机的身份验证的处理程序
- opener = urllib2.build_opener(auth_handler) #返回一个openerDirector实例
- urllib2.install_opener(opener) #安装一个openerDirector实例作为默认的开启者。
- response = urllib2.urlopen(surl) #打开URL链接,返回Response对象
- resContent = response.read() #读取响应内容
- except:
- info=sys.exc_info()
- resContent = getAllAttrs(info[0]) + getAllAttrs(info[1]) #获取异常的详细信息
-
- self.protocal_version = 'HTTP/1.1' #设置协议版本
- self.send_response(200) #设置响应状态码
- self.send_header("Content-type", "text/html") #设置响应头
- self.end_headers()
- self.wfile.write("{\"text\":\"%s\"}" % resContent) #输出响应内容
- else:
- #/trans 之外的请求,交给底层去处理
- if self.path == "":
- self.path = '/index.html'
-
- fStatic = self.send_head()
- if fStatic:
- try:
- self.copyfile(fStatic, self.wfile)
- finally:
- fStatic.close()
-
-
- # Read port selected by the cloud for our application
- PORT = int(os.getenv('PORT', 8000))
- # #改变当前目录到 static 目录
- os.chdir('static')
-
- httpd = Server(("", PORT), TransHTTPHandler)
- try:
- print("Start serving at port %i" % PORT)
- httpd.serve_forever() ##设置一直监听并接收请求
- except KeyboardInterrupt:
- pass #按Ctrl+C退出服务
- httpd.server_close()
我们定义的do_GET处理程序只处理/trans请求,/trans 之外的请求,交给底层去处理
执行命令:python server.py
在浏览器中访问,查看效果,打开浏览器,输入:http://localhost:8000/
登录到 Bluemix™ 后,可以使用 cf push 命令来上传应用程序。
开始之前,您必须:cf login -u ivu4e@qq.com -o ivu4e@qq.com -s ivu4e
4、发出 cf push 命令时,cf 命令行界面将提供使用 buildpack 来构建并运行应用程序的 Bluemix 环境的工作目录。
cf push 命令上传应用程序并将其部署到 Bluemix。有关 cf push 的更多信息,请参阅 cf 命令。有关 buildpack 的信息,请参阅使用社区 buildpack。
通过仪表板进入您刚刚创建的应用页面,点击左侧的开始编码,右侧顶部会显示:您的应用程序正在运行。http://pytrans.mybluemix.net/
点击后面的链接访问刚刚发布的应用。
通过IBM的Bluemix云平台,我们可以轻松的将自己的应用共享到网络上;
创建Web应用之后会自动获得一个用来访问应用的二级域名;
通过应用程序概述中的应用程序运行状况,可以方便的查看和管理应用运行状态;
这里通过一个小例子展示如何将自己的应用发布到IBM的Bluemix云平台上,
如何与IBM云平台上提供的语言翻译服务交互。
如果您有更好的应用或想法,试试通过IBM的Bluemix云平台共享出来吧。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。