码迷,mamicode.com
首页 > Web开发 > 详细

Play Framework Web开发教程(16): 处理HTTP请求和响应

时间:2014-08-13 10:33:35      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:style   http   color   使用   os   io   文件   数据   

设计应用的一个方面是规划HTTP请求的URL规范,超链接,HTTP表单以及可能的公用API接口。在Play这是通过路由配置,然后在控制器中实现相应的接口。
Play应用中的路由配置可以Controller类构成了MVC框架中的控制层,如下图所示:
bubuko.com,布布扣
在Play应用中Controller为定义了HTTP接口的Scala类,而你的路由配置决定了给定的HTTP请求调用哪个Controller中定义的方法,这些Controller中的方法称为Action(动作),因此Play 的MVC框架也称为基于“动作”的MVC模型,一个Controller定义了一组相关的Action方法。
除了处理HTTP请求之外,动作方法也负责生成HTTP响应。大部分情况,你通过合成HTMLView模板来生成HTTP响应,但一个HTTP响应也可能是一个HTTP错误或者返回其它格式的数据,比如文本,XML或是JSON格式的数据,或者是二进制类型比如图像。
以URL为中心的设计方法
设计Web应用的一个好的开端是定义HTTP接口–它的URL定义。它的其它两种设计方法–以数据为中心或者以UI为中心的设计另外一种变通方式,以URL为中心的设计不代表它比其它两种方式要好,它可能对一些开发人员可能感觉更有效。有时最好的一种方法是同时使用三种设计方式的一种折中方法。
以URL为中心的设计方法意味着区分应中的资源,然后定义这些资源上可能的操作,然后定义一系列的URL以支持访问和操作这些资源。一旦定义好HTTP接口,然后就可以开发基于这些HTTP接口的用户界面部分,并添加数据模型。下图显示了这个设计过程:
bubuko.com,布布扣
这种设计方式通常是定义符合REST规范的HTTP接口,有时间我们将详细介绍这方面的知识。
配置HTTP请求到Controller类中Action方法的路由
在Play中路由的配置非常灵活,比如:我们可能定义和产品分类相关的URL可能有:

1GET /
2GET /products
3GET /products?page=2
4GET /products?filter=zinc
5GET /product/5010255079763
6GET /product/5010255079763/edit
7PUT /product/5010255079763

为了实现这个方案,你在conf/routes中定义这些路由方案:

1GET / controllers.Application.home()
2GET /products controllers.Products.list(page: Int ?= 1)
3GET /product/:ean controllers.Products.details(ean: Long)
4GET /product/:ean/edit controllers.Products.edit(ean: Long)
5PUT /product/$ean<\d{13}> controllers.Products.update(ean: Long)

路由的语法结构定义如下:
bubuko.com,布布扣

后面将详细介绍路径配置文件的语法,这里可以看到定义从HTTP请求到Controller类中方法是多么的直接,并且支持HTTP请求参数到Controller中action方法参数类型的定义,这种方法称为数据绑定。

将HTTP数据绑定到Scala对象
实现HTTP请求到Controller中Action方法的映射只是路由工作的一半任务,Action方法通常带有参数,因此你需要能够把HTTP请求中的数据映射到Action的参数,下图显示了前面例子中请求产品详细信息的请求如果映射到Action方法的过程:
bubuko.com,布布扣

生成不同类型的HTTP响应
Controller不仅处理HTTP请求,同时也生成HTTP响应,大部分情况为返回HTML页面,但也支持其它类型的HTTP响应,比如文本,XML,JSON或是图像等。Play使用Scala对象来处理HTTP数据,也提供了多种Scala类型来处理不同类型的HTTP响应,你可以在Controller的方法中使用这些Scala类型来生成不同类型的HTTP响应。后面我们分别介绍这些类型来支持文本,HTML,JSON或是图像。



 

Play Framework Web开发教程(16): 处理HTTP请求和响应,布布扣,bubuko.com

Play Framework Web开发教程(16): 处理HTTP请求和响应

标签:style   http   color   使用   os   io   文件   数据   

原文地址:http://blog.csdn.net/mapdigit/article/details/38532265

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!