牛骨文教育服务平台(让学习变的简单)
博文笔记

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

创建时间:2018-11-06 投稿人: 浏览次数:445

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

设计应用的一个方面是规划HTTP请求的URL规范,超链接,HTTP表单以及可能的公用API接口。在Play这是通过路由配置,然后在控制器中实现相应的接口。
Play应用中的路由配置可以Controller类构成了MVC框架中的控制层,如下图所示:
20140810001
在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接口的用户界面部分,并添加数据模型。下图显示了这个设计过程:
20140810002
这种设计方式通常是定义符合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)

路由的语法结构定义如下:
20140810003

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

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

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。