RESTful API是目前比较成熟的一套互联网应用程序的API设计理论。而随着RESTful API的成熟和流行,应用开发方面就需要以模拟http请求的方式来调用RESTful API接口;经过一段时间的IBM的云平台Blumemix的学习及语言翻译服务的应用,积累了Java、ASP.NET、Nodejs、Go、PHP、Python、Ruby等语言调用Rest API的方法,这里整理到一起,和大家分享一下。
有关RESTful API请参考:理解RESTful架构,RESTful API 设计指南
Java这方面的Jar包应该比较多,比如HttpClient,我这里使用最基本的:
//认证信息对象,用于包含访问翻译服务的用户名和密码 Authenticator auth = new MyAuthenticator("用户名", "密码"); Authenticator.setDefault(auth); // 打开和URL之间的连接 HttpsURLConnection connection = (HttpsURLConnection)realUrl.openConnection(); connection.setDoInput(true); connection.setDoOutput(true);//允许连接提交信息 connection.setRequestMethod("GET"); // 建立实际的连接 connection.connect();相关实例: Java中REST API使用示例——基于云平台+云服务打造自己的在线翻译工具
ASP.NET中使用System.Net.Http.HttpClient类来实现API调用:
System.Net.Http.HttpClient httpClient = new System.Net.Http.HttpClient(); //将服务凭证转换为Base64编码格式 byte[] auth = Encoding.UTF8.GetBytes("用户名:密码"); String auth64 = Convert.ToBase64String(auth); //创建并指定服务凭证,认证方案为Basic httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", auth64); retString = await httpClient.GetStringAsync(uri);
相关实例:ASP.NET5 REST API使用示例——基于云平台+云服务打造自己的在线翻译工具
php中使用大名鼎鼎的CURL来实现API调用:
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //https请求必须设置以下两项 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //设置凭证 curl_setopt($ch, CURLOPT_USERPWD, '您的用户名:您的密码'); //执行请求 $output = curl_exec($ch);相关实例: IBM的云平台Bluemix使用初体验——创建PHP Web 应用程序,添加并使用语言翻译服务
Python中使用标准库urllib2来实现API调用
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() #读取响应内容相关实例: Python Web中REST API使用示例——基于云平台+云服务打造自己的在线翻译工具
Ruby使用Net::HTTP类来实现API调用
http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(uri.request_uri) request.basic_auth "用户名", "密码" response = http.request(request)
相关实例:Ruby On Rails中REST API使用示例——基于云平台+云服务打造自己的在线翻译工具
Go语言使用net/http包来实现API调用,它有个好处是我们可以直接把用户名和密码写在Url中
url = "https://用户名:密码@gateway.watsonplatform.net/language-translation/api/v2/translate?"; resp, err := http.Get(url) //改送HTTP Get请求 if err != nil { fmt.Fprintf(w, err.Error()) return } if resp != nil && resp.Body != nil { defer resp.Body.Close() } if resp.StatusCode != http.StatusOK { fmt.Fprintf(w, errors.New(resp.Status).Error()) return } data, err := ioutil.ReadAll(resp.Body) if err != nil { fmt.Fprintf(w, err.Error()) return }相关实例: IBM的云平台Bluemix使用初体验——创建Go语言 Web 应用程序,添加并使用语言翻译服务
Nodejs使用https包来实现API调用
//模拟HTTP Get请求 http.get("https://翻译服务用户名:密码@gateway.watsonplatform.net/language-translation/api/v2/translate?" + data, function(gres) { var body = ''; gres.on('data',function(d){ body += d; }).on('end', function(){ //console.log(gres.headers); //console.log(body); //输出响应内容 res.send("{\"text\":\"" + body + "\"}"); }); }).on('error', function(e) { console.log("Got error: " + e.message); });
相关实例:Node.js中REST API使用示例——基于云平台+云服务打造自己的在线翻译工具