请求和响应:类ActionController::Base ; 类ActionDispatch::Request
扩展:ActionController::Base < Metal
2个基本主题:
- Get and Show
- do and redirect
Requests
每个请求,由router决定了controller和action keys。剩下的请求参数,the session, 和所有http headers会通过request accessor方法被制造出来给action,然后action被执行。
完全的请求对象可以通过请求accessor方法使用。主要用于查询HTTP headers。例如:
def server_ip
location = request.env["REMOTE_ADDR"]
render plain: "This server hosted at #{location}"
end
Parameters
所有请求参数,无论是来自URL中的查询字符串还是表格通过a POST request提交的data, 都可以用params方法返回一个hash。
例子:一个action被执行,通过/post?category=All&limit=5。 params中就会包括{"category" => "All", "limit" => 5}
例子:类似表格
<input type="text" name="post[name]" value="david">
<input type="text" name="post[address]" value=":">
提交后会params中包括{"post" => {"name" => "david", "address" => "hyacintvej"}}
Session
用于在请求之间储存对象的。使用session方法,通过a hash来储存对象。例子:
储存:session[:person] = Person.authenticate(user_name, password)
取出:seesion[:person]
设置为nil : session[:person] = nil
移除: reset_session
session默认储存在浏览器cookie中。
Response
每个action都会导致a response, 它会把headers, document发送给用户浏览器。
实际的请求对象是自动的通过用户的renders和redirects产生的,无需用户干涉。
Renders
Action Controller发送内容给用户,通过渲染方法(五种类型中的一种)。
常见的是渲染template。
包括在Action Pack中的是Action View, 它能渲染ERB模版。它是自动配置的。
controller传递实例变量给view。
Redirects
用于从一个action移动到另外一个action。
例子:redirect_to action: 'show', id: @entry.id 或者 redirect_to entry_path(@entry)
⚠️
这是一个 额外的HTTP-level redirection,会让浏览器发送第二个请求(a GET to the show action),
可不是内部re-routing,在一个request中同时调用create方法然后调用show方法(❌想法)
实例方法:
request: 返回一个 ActionDispatch::Request实例来响应当前的请求。
response:Returns an ActionDispatch::Response that represents the current response.
ActionDispatch::Request < Object
方法:
# get "/articles"
request.fullpath # => "/articles"
request.headers["Content-Type"] # => "text/plain"
parmas() /parameters()返回GET/Post参数在一个hash中。
ActionDispatch::Response < Object
由controller action生成的HTTP response对象。
用来检索当前response的状态,或者客制化response。也可以代表一个真正的HTTP response(即 发送给浏览器),或者一个TestResponse
方法:
response.status = 404
response.message # => "Not Found"
response.content_type = "text/plain"
ActionDispatch::Integration::RequestHelpers
get, post , delete put, patch, head方法都是用到了process(:方法, path, **args)
例子
process :get, '/author', params: { since: 201501011400 }
请求和响应:类ActionController::Base ; 类ActionDispatch::Request的更多相关文章
- 序列化多表操作、请求与响应、视图组件(子类与拓展类)、继承GenericAPIView类重写接口
今日内容概要 序列化多表操作 请求与相应 视图组件 内容详细 1.序列化多表操作 模型类 models.py中 # 新建django项目 # 创建表 模型类models.py中: from djang ...
- 【Java EE 学习 69 下】【数据采集系统第一天】【实体类分析和Base类书写】
之前SSH框架已经搭建完毕,现在进行实体类的分析和Base类的书写.Base类是抽象类,专门用于继承. 一.实体类关系分析 既然是数据采集系统,首先调查实体(Survey)是一定要有的,一个调查有多个 ...
- C++ - 派生类访问模板基类(templatized base class)命名
派生类访问模板基类(templatized base class)命名 本文地址: http://blog.csdn.net/caroline_wendy/article/details/239936 ...
- java通过当前请求得到访问者ip的工具类
在我们开发的过程中,也许有下面的这样的需求,就是要记录一下每次访问服务器的ip,需要存到数据库,以便以后进行数据分析等... 下面给大家介绍一个通过当前请求得到访问者ip的工具类 IpUtil.jav ...
- (GoRails)链接link_to到当前页current Page 并使用参数 (类ActionController::Parameters)
https://gorails.com/episodes/rails-link-to-current-page-with-params?autoplay=1 如何链接到当前页并增加,移除,或者修改UR ...
- wpf 错误 执行了 QueryInterface 调用,请求提供 COM 可见的托管类“BoilerMonitoringV1._0.MapControl”的默认 IDispatch 接口。
在做wpf嵌入地图时,在自定义的WebBrowser 里面使用JavaScript调用外部方法的时报的错误 在原来的WinForm里 我们只要在窗体类设置的头部设置个 [System.Runtime. ...
- Django底层剖析之一次请求到响应的整个流程
As we all know,所有的Web应用,其本质上其实就是一个socket服务端,而用户的浏览器就是一个socket客户端. #!/usr/bin/env python #coding:utf- ...
- CakePHP之请求与响应对象
请求与响应对象 请求与响应对象在 CakePHP 2.0 是新增加的.在之前的版本中,这两个对象是由数组表示的,而相关的方法是分散在RequestHandlerComponent,Router,Dis ...
- django从请求到响应的过程深入讲解
django启动 我们在启动一个django项目的时候,无论你是在命令行执行还是在pycharm直接点击运行,其实都是执行'runserver'的操作,而ruserver是使用django自带的的we ...
随机推荐
- c/c++日期时间处理与字符串string转换
转自:https://www.cnblogs.com/renjiashuo/p/6913668.html 在c/c++实际问题的编程中,我们经常会用到日期与时间的格式,在算法运行中,通常将时间转化为i ...
- ACM第二站————STL之stack
栈,作为一种最基础的数据结构(栈还是一种内存的存储形式,就不介绍了),在各种数据结构的题目都会间接或者直接用到. 栈是一种受到限制的线性表,其限制是仅允许在表的一端进行插入和删除运算.这也给予了栈的一 ...
- inotify工具安装配置
一.安装 1) 从内核和目录里面查看是否支持inotify [root@nfs01 ~]# uname -r 2.6.32-573.el6.x86_64 [root@nfs01 ~]# ls -l ...
- ubuntu下git clone 提速
环境:ubuntu16.04 方法:通过socks5代理并且使用http链接 步骤: 1.设置全局使用socks5代理,并且使用http传输 git config --global http.prox ...
- POJ 2823 Sliding Window(单调队列 || 线段树)题解
题意:求每个长度为k的数组的最大值和最小值 思路: 1.用线段树创建维护最大值和最小值,遍历询问,简单复习了一下...有点手生 2.单调队列: 可以看一下详解 单调队列顾名思义就是一个单调递增或者递减 ...
- 怎么在VS监视DataSet类型的数据
旧版本 先监视DataSet,打开dataset,dataset下面有一个tablesTables打开有一个非公共成员,然后下面有一个List,List中存储了每一张表的信息 下图所示的List下面的 ...
- [微信开发] - 微信支付 JSAPI 形式
微信官方的JSAPI文档 微信官方的JSAPI支付SDK与DEMO下载 查看JSAPI的API可以从这里看 下载了支付DEMO其实有些地方不对的,比如如果做沙盒测试的时候,需要使用getsignkey ...
- UVa 116 单向TSP(多段图最短路)
https://cn.vjudge.net/problem/UVA-116 题意:给出m行n列的整数矩阵,从第一列任何一个位置出发每次往右,右上或右下走一格,最终到达最后一列,要求经过的整数之和最小. ...
- UVa 1610 聚会游戏
https://vjudge.net/problem/UVA-1610 题意:输入一个n个字符串的集合D,找一个长度最短的字符串S,使得D中恰好有一半串小于等于S,另一半串大于S. 思路:先拍序,然后 ...
- MVC ---- IEnumerable<T>、List<T> 前台遍历展示
突然做前台数据展示,发现IEnumerable 对一个列表的展示还是可以,但要是多个类型放在一个表中如何处理呢,如下: 一个类IEnumerable遍历 后台 public IEnumerable&l ...