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

1.The Object


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

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

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

>>>

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等等。这些轻量级框架和移动应用的轻量级需求相适应,因而得到快速流行。

而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实现客户端登录的例子。

转载于:https://www.cnblogs.com/Kassadin/p/4541103.html

简单易懂的现代魔法——Play Framework攻略4相关推荐

  1. 烏托邦:起源魔法圖案攻略

    烏托邦:起源魔法圖案攻略 在烏托邦:起源中,初入遊戲的新手都會獲得一些前期的基本物資,而法杖就是其中的一把也是唯一把武器,那麼法杖要如何使用?魔法怎麼畫?有什麼用?怎麼用?魔法圖案又有哪些那?下面就一 ...

  2. 上古卷轴3晨风详尽指引攻略

    一 人物创造 晨风的人物创造是在游戏开始后的进行过程中完成的,首先是在船舱里决定自己的名字,然后出了船上岸之后会有人问你的种族,这时候决定自己的外貌,接下来进入人口办公室,和工作人员对话来决定职业和属 ...

  3. 创造与魔法最新服务器怎么进,创造与魔法进不了服务器 | 手游网游页游攻略大全...

    发布时间:2018-03-25 创造与魔法游戏中有着监狱这一设定,不少小伙伴不知道自己做错了什么就迷迷糊糊进了监狱,那么,进监狱了怎么办呢?下面就让牛游戏小编来为大家介绍一下创造与魔法进监狱的解决办法 ...

  4. NET Micro FrameworkのTimerクラス攻略

    NET Micro FrameworkのTimerクラス攻略 2011/11/8に公開された@IT Monoistの記事.「.NET Micro FrameworkデバイスとWindows Phone ...

  5. 【哈利波特·魔法觉醒】手记全攻略

    哈利波特·魔法觉醒 手记全攻略 保姆全攻略 哈利波特手记 1 寻访马人 1.1 线路一(一星) 1.2 线路二(非一星) 1.3 线路三(非一星) 1.4 线路四(非一星) 2 追寻独角兽 2.1 线 ...

  6. 创造与魔法怎么自建服务器,创造与魔法自建服攻略大全_创造与魔法自建服建造方法、福利_玩游戏网...

    今天小编给大家带来的是创造与魔法自建服攻略大全,创造与魔法怎么自建服?自建服和官方服有什么不同?自建服有什么福利?接下来就和小编一起来看看吧,希望能够帮助到大家. 自建服的配置怎样? 自建服与官方大服 ...

  7. 创造与魔法服务器维护,创造与魔法为什么服务器维护 | 手游网游页游攻略大全...

    发布时间:2016-02-29 CF2016年8月11日对服务器进行例行维护.这次维护大家会感觉没什么可更新的呀.来看看99单机小编熊卜卜的CF8月11日服务器维护更新公告 修复火线币商城bug哈. ...

  8. 创造与魔法为啥显示服务器繁忙,创造与魔法进不去服务器繁忙 | 手游网游页游攻略大全...

    发布时间:2016-08-03 方舟适者生存服务器进不去 进不去服务器解决办法攻略.服务器进不去怎么办?很多玩家无法进入服务器,主要是两种情况,一种是点服务器游戏就重启,一种是进不去,这里给大家介绍解 ...

  9. 麦芒6计算机记录,最简单易懂的HUAWEI 麦芒6实用小攻略

    原标题:最简单易懂的HUAWEI 麦芒6实用小攻略 "为啥" 是一个大型综合类问答平台. 主要提供-- 产品咨询.使用帮助.心得分享 梦想互助.情感困惑 等问题答疑服务. 在微博( ...

最新文章

  1. 在哪里学python好-自学python好还是去培训机构好?
  2. UDP千兆以太网FPGA_verilog实现(一、知识搜集)
  3. 大会直击|微软亚洲研究院刘铁岩:深度学习成功的秘密
  4. android IntentService
  5. 【接口技术】8086的IN和OUT指令
  6. self 实例对象-代码详细解释
  7. Python精通-运算符与基本数据类型(三)
  8. python自助电影售票机_手把手教你用python抢票回家过年(代码简单)
  9. mybatis使用char类型字段查询oracle数据库时结果查询不到的问题
  10. unity 变量的编译
  11. mysql 压力测试
  12. python常用运维脚本实例-经典!Python运维中常用的几十个Python运维脚本
  13. CSDN 社区内容创作规范
  14. Arraylist去除重复元素
  15. html css js php常用网页代码汇总合集(三)网页设计入门代码知识汇总3
  16. Adding Animations之Zooming a View
  17. 图灵机器人之Python实现
  18. 《超越LOGO设计:国际顶级平面设计师的成功法则(第2版)》—第1章无处不在的LOGO...
  19. 六大云端 Jupyter Notebook 平台测评
  20. C语言求二维数组鞍点

热门文章

  1. 名词解释CPC、CPM、CPA.......[来源于网络]
  2. onbeforeunload与onunload事件(转)
  3. python怎么调用函数的返回值类型,10、Python基础之函数的调用与返回值
  4. 计算机网络第七章:网络安全
  5. 【Android 安装包优化】WebP 应用 ( 4.0 以下兼容 WebP | Android Studio 中使用 libwebp.so 库向下兼容版本 | libwebp 库测试可用性 )
  6. 【组合数学】排列组合 ( 集合排列、分步处理示例 )
  7. tp6中使用微信支付sdk
  8. Python爬虫从入门到放弃(十二)之 Scrapy框架的架构和原理
  9. Python 爬虫实现天气查询(可视化界面版)
  10. JSP自定义标签开发与打包