接前文:简单易懂的现代魔法——Play Framework攻略3html
1.The Objectjava
时隔2个多月,Play Framework系列又更新了,本次的主题是:利用Play Framework实现Rest风格的Web Service。数据库
[1]利用Play!实现Rest风格的Web服务,该Web服务的功能是登陆验证。编程
[2]在客户端调用该Web服务,判断Web服务是否可用。(测试)swift
>>>windows
什么是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操做。
>>>
理论讲了这么多,是在是难以理解,下面实战演示一下。服务器端要实现的业务流程是:
[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 }
关键点在于创建了一个JSON对象result,而后在result对象中写入信息。最后直接将这个JSON对象返回给客户端便可。
[4]终端运行服务器
KirigirideMacBook-Air:loginService Kirigiri$ activator run
[5]输入网址进行测试:
http://10.110.2.115:9000/login,输入用户名和密码后,成功返回JSON数据。
至此,服务器端开发完成,咱们只修改了几行代码,就把Web程序改写为了服务器端程序,可见Rest风格的Web服务是多么的强大。
>>>
既然有了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 }
(4)点击Run开始运行程序
咱们在客户端成功获得了返回的JSON信息!
至此,测试成功。因为我对iOS开发彻底不熟悉,因此还不能利用获得的JSON数据进行iOS UI的开发和页面跳转。下次我会利用windows程序展现一个利用Web Service实现客户端登陆的例子。