简单易懂的现代魔法——Play Framework攻略4

接前文:简单易懂的现代魔法——Play Framework攻略3html

1.The Objectjava


 时隔2个多月,Play Framework系列又更新了,本次的主题是:利用Play Framework实现Rest风格的Web Service。数据库

[1]利用Play!实现Rest风格的Web服务,该Web服务的功能是登陆验证。编程

[2]在客户端调用该Web服务,判断Web服务是否可用。(测试)swift

>>>windows

2. Web Service


什么是Web Service!这又是一个很复杂的问题,这里我就不拿学术论文来探讨这个问题了。这里就提几个关键词好了:SOAP,SOA,WSDL,RPC,XML,JSON。至于学术上讨论的Web Service你们能够自行百度学习下:Web Service安全

简单理解Web服务,就是一个跨语言和平台的服务接口,好比咱们熟悉的天气预报接口,百度地图接口,微博接口等都属于Web Service。这些远程Web API,大多采用Web Service技术实现。服务器

那么,什么是Restful Web Service呢!?架构

近几年来,Restful Web Service方兴未艾,大有赶超SOAP之势。传统的Web Service大多基于SOAP协议,在编写Web服务过程当中,大量的配置文件定义和复杂的安全控制使得这类Web Service愈来愈重量级;近几年来随着移动应用的兴起,愈来愈多的轻量级框架开始逐渐展露头角,好比Ruby中的Sinatra,Python中的Flask,Node.js中的Express等等。这些轻量级框架和移动应用的轻量级需求相适应,于是获得快速流行。app

而Restful Web Service则是Web服务轻量化的体现。Rest风格的Web服务并非一个协议,只是一种编程风格。Restful的基本思想是基于资源的架构。Restful Web Service使得访问Web服务像访问Web网站同样平滑。它的最突出特色是提供POST,GET,Delete等方式访问Web服务,把全部的服务看做是一种资源,对于资源,能够简单的进行CRUD操做。

>>>

3.基于Play Framework的服务器端开发


 理论讲了这么多,是在是难以理解,下面实战演示一下。服务器端要实现的业务流程是:

[1]提供一个登陆接口,用户能够输入用户名和密码

[2]服务器接受用户提交的数据

[3]服务器对比用户名和密码是否正确(一般须要访问数据库,本次咱们固定密码在程序中)

[4]服务器返回登陆是否成功的JSON信息给客户端

服务器端的开发是在简单的不行,咱们打开上次创建的工程(简单易懂的现代魔法——Play Framework攻略3

[1]打开工程

因为业务逻辑和上次基本同样,只是服务器再也不跳转网页,而是返回JSON信息,所以咱们继续使用上次的工程进行修改便可。

[2]删除post.scala.html文件

在app/views中删除post.scala.html文件。因为咱们再也不须要跳转网页,所以该视图能够直接删除。

[3]修改controller中的loginPost Action

修改app/controllers/Application.java文件的Application类的loginPost()方法,代码以下:

 1 public Result loginPost()
 2 {
 3         DynamicForm requestData = Form.form().bindFromRequest();
 4         String username = requestData.get("username");
 5         String password = requestData.get("password");
 6 
 7         ObjectNode result = Json.newObject();
 8         if(username.equals("kirigiri") && password.equals("123456"))
 9         {
10             result.put("result","登陆成功");
11             return ok(result);
12         }
13         else
14         {
15             result.put("result","用户名或密码错误,请从新登陆");
16             return ok(result);
17         }
18 }
loginPost

关键点在于创建了一个JSON对象result,而后在result对象中写入信息。最后直接将这个JSON对象返回给客户端便可。

[4]终端运行服务器

KirigirideMacBook-Air:loginService Kirigiri$ activator run 

[5]输入网址进行测试:

http://10.110.2.115:9000/login,输入用户名和密码后,成功返回JSON数据。

至此,服务器端开发完成,咱们只修改了几行代码,就把Web程序改写为了服务器端程序,可见Rest风格的Web服务是多么的强大。

>>>

4.客户端测试例子


既然有了Web Service,那么咱们就能够在移动客户端实现登陆啦!至于客户端具体怎么开发,我会在下一篇文章详述,这里我就展现一个用Swift写的客户端例子吧。

[1]新建iOS程序

[2]修改ViewController.swift代码

(3)在func viewDidLoad()中写入下列代码:

 1 override func viewDidLoad() {
 2         super.viewDidLoad()
 3    
 4         var bodyData = "username=kirigiri&password=123456"
 5         
 6         var url = NSURL(string: "http://10.110.2.115:9000/login")
 7         var request = NSMutableURLRequest(URL: url!)
 8         
 9         request.HTTPMethod = "POST"
10         request.HTTPBody = bodyData.dataUsingEncoding(NSUTF8StringEncoding);
11         
12         let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
13             data, response, error in
14             
15             if error != nil
16             {
17                 println("error=\(error)")
18                 return
19             }
20             
21             println("response = \(response)")
22             
23             let responseString = NSString(data: data, encoding: NSUTF8StringEncoding)
24             println("responseString = \(responseString)")
25             
26             var err: NSError?
27             var myJSON = NSJSONSerialization.JSONObjectWithData(data, options: .MutableLeaves, error:&err) as? NSDictionary
28             
29             if let parseJSON = myJSON {
30                 var result = parseJSON["result"] as? String
31                 println("result: \(result)")
32             }
33         }
34         task.resume()
35     }
Swift code

(4)点击Run开始运行程序

咱们在客户端成功获得了返回的JSON信息!

至此,测试成功。因为我对iOS开发彻底不熟悉,因此还不能利用获得的JSON数据进行iOS UI的开发和页面跳转。下次我会利用windows程序展现一个利用Web Service实现客户端登陆的例子。

相关文章
相关标签/搜索