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

接前文:简单易懂的现代魔法——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()方法,代码如下:

public Result loginPost()
{
        DynamicForm requestData = Form.form().bindFromRequest();
        String username = requestData.get("username");
        String password = requestData.get("password");

        ObjectNode result = Json.newObject();
        if(username.equals("kirigiri") && password.equals("123456"))
        {
            result.put("result","登录成功");
            return ok(result);
        }
        else
        {
            result.put("result","用户名或密码错误,请重新登录");
            return ok(result);
        }
}

 关键点在于建立了一个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()中写入下列代码:

override func viewDidLoad() {
        super.viewDidLoad()

        var bodyData = "username=kirigiri&password=123456"

        var url = NSURL(string: "http://10.110.2.115:9000/login")
        var request = NSMutableURLRequest(URL: url!)

        request.HTTPMethod = "POST"
        request.HTTPBody = bodyData.dataUsingEncoding(NSUTF8StringEncoding);

        let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
            data, response, error in

            if error != nil
            {
                println("error=\(error)")
                return
            }

            println("response = \(response)")

            let responseString = NSString(data: data, encoding: NSUTF8StringEncoding)
            println("responseString = \(responseString)")

            var err: NSError?
            var myJSON = NSJSONSerialization.JSONObjectWithData(data, options: .MutableLeaves, error:&err) as? NSDictionary

            if let parseJSON = myJSON {
                // Now we can access value of First Name by its key
                var result = parseJSON["result"] as? String
                println("result: \(result)")
            }
        }
        task.resume()
    }

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

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

至此,测试成功。由于我对iOS开发完全不熟悉,所以还不能利用得到的JSON数据进行iOS UI的开发和页面跳转。下次我会利用windows程序展示一个利用Web Service实现客户端登录的例子。

时间: 2024-08-07 03:44:47

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

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

哇哈哈,寒假结束啦,于是我又开新坑了....这次的主角可是大名鼎鼎的Play Framework!!那么闲话少说,开始攻略吧! 1.什么是Play Framework? 大名鼎鼎的play framework究竟是什么呢!? 当然是一个框架了(废话!),官方的定义请自行查阅官网:https://www.playframework.com/ 个人的理解是,play framework是一个基于scala的轻量级web开发框架.Play framework本身是采用scala编写的,在设计过程中深受

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

接前文:http://www.cnblogs.com/Kassadin/p/4335908.html 上次讲到Play Framework开发环境的配置,以及第一个Hello World程序:本次主要介绍Play Framework的几个核心概念. 1. Web应用程序的请求响应模型 每一个web开发者对于HTTP request和HTTP response都可以说是耳熟能详.实际上他们对应了Web开发的基本模型:请求-响应模型.请求响应模型的过程如下: (1)Web浏览器通过HTTP协议向服务

php连接微软MSSQL(sql server)完全攻略

http://www.jb51.net/article/98364.htm php连接微软MSSQL(sql server)完全攻略 作者:吵吵 字体:[增加 减小] 类型:转载 时间:2016-11-27我要评论 在研究ezSQL的时候就看到了mssql_connect()等一些php提供的连接MSSQL的函数,本以为php这个开源的风靡世界的编程语言对连接微软的数据应该是不在话下的,但是到真正执行的时候,才发现困难多多 在研究ezSQL的时候就看到了mssql_connect()等一些php

【2015/7/22】SqlServer卸载重装全攻略!

请大家大声地告诉我,哪个软件最恶心.装了之后跟在电脑里面糊了一层泥,甩都甩不干净.之前手贱,重装系统后装了sqlserver2014的试用版.可惜过了半年试用期就到了.然后重装2012,2014卸载得不干净.一直装不了.恶心!一般人是搞不定的.. 我不是一般人.. 预备工作,去控制面板里面的程序和功能里面看自己安装的sqlserver 后面的日期是多少,记下来,这很重要. 首先卸载sqlserver,如何卸载呢?分步走: 1.去下载一个srvinstw软件,这个软件可以移除服务.用管理员身份运行

iOS 使用Charts框架 折线,柱状,K线,饼状,雷达全攻略

我是前言: 大约几个月前我在某平台写了一篇文章, 文中简单地介绍了Charts两种图表的样式的使用, 不过有种意犹未尽的感觉, 利用周末的空闲时间再次看了看, 有了新的收获, 今天发出来,分享给大家, 来稍加详细的再次走进Charts的世界. 完全纯代码. 经过测试: 1.1使用cocoa pods集成(只能在9.3之后运行), 有知道原因的请在下方评论 1.2 这篇文章的例子我是使用手动加入的framework进行测试的. 如果你不清楚如何加入三方框架请点击看看这篇文章http://www.j

寒城攻略:Listo 教你 25 天学会 Swift 语言 - 01 About Swift

import Foundation /* Listo Han 出品 Swift 编程攻略 攻略参考:<The Swift Programming Language> 攻略适用:本攻略适合 Swift零基础,但要有至少其他任何一门编程语言基础,熟悉程序语句的用户 攻略格式: 知识模块://***********************************************************************************************/ 模块细节://_

Moon.Orm3.8技术全攻略

Moon.ORM技术全攻略  一.绪论 本文主要是针对Moon.ORM的技术的讨论及其使用使用指导.如有其它疑问,请留言.本文主要针对Moon.ORM3.9版本,同时将会对4.0做一个技术预览.本文从实际出发解析Moon.ORM.(技术群:21696534)  二.Moon.ORM的特色及优势 ----但凡众多的智慧都是及其简单的,但不为人所知.这也是Moon.ORM的主要特色:大道至简. 1.高性能是Moon.ORM优势之一,也是我架构它的主要目的之一,如以前我说的那样,是为了弥补项目中遇到的

《终极空想13雷霆归来》全主线支线收集图文攻略

<最终理想13雷霆归来>全主线支线收集图文攻略 最终幻想13:雷霆归来专区 之前的<***13雷霆归来>攻略可能都是日文的,不方便浏览,下面为大家带来<最终空想13雷霆归来>完美全剧情图文攻略,包含全主线.支线及画布饰品收集图文攻略,针对PC中文版,便利懂得,一起来看看吧. 额定提示:开启STEAM云得以让游戏运行前言1.一周目倡议选择EASY难度,刷起来清新舒服,强力技能提前备足低等级的,方便合成低耗高阶技能. 2.游戏内各种主要名词以及主线.支线.祈祷画布.怪物名.

Linux下Hadoop 2.2.0 集群配置攻略

Hadoop 2.2.0 集群配置攻略 用户输入标识: chmod +x jdk-7u45-linux-x64.rpm  为黑色带底纹 系统输出标识: java version "1.7.0_51" 为绿色小字 2014年3月20-日 by lilihao Q 404536204 1. 安装sun jdk (1). 到Oracle的官方网站下载jdk,目前最新版本是7u51 安装包: http://www.oracle.com/technetwork/java/javase/downl