如果您的控制器操作如下所示:
respond_to do |format|
format.html { raise 'Unsupported' }
format.js # index.js.erb
end
Run Code Online (Sandbox Code Playgroud)
你的功能测试看起来像这样:
test "javascript response..." do
get :index
end
Run Code Online (Sandbox Code Playgroud)
它将执行respond_to块的HTML分支.
如果你试试这个:
test "javascript response..." do
get 'index.js'
end
Run Code Online (Sandbox Code Playgroud)
它执行视图(index.js.erb)而没有运行控制器动作!
我想编写一个快速中间件函数,在响应的'end'事件(如果存在)上设置一个监听器.目的是根据结束处理程序决定发送的http响应代码进行清理,例如记录响应代码和db事务的回滚/提交.即,我希望这个清理对结束调用者是透明的.
我想在快递中做以下的事情:
路由中间件
function (req, res, next) {
res.on ('end', function () {
// log the response code and handle db
if (res.statusCode < 400) { db.commit() } else { db.rollback() }
});
next();
}
Run Code Online (Sandbox Code Playgroud)
路线:
app.post ("/something", function (req, res) {
db.doSomething (function () {
if (some problem) {
res.send (500);
} else {
res.send (200);
}
});
}
Run Code Online (Sandbox Code Playgroud)
当我尝试这个时,'end'事件处理程序永远不会被调用.同样的res.on('close'),我在另一篇文章中读到过.这样的事件会被解雇吗?
我能想到的另一种方法是在自定义中间件中包装res.end或res.send使用我自己的版本.这不是理想的,因为res.end并且res.send不接受回调,所以我不能只是包装它们,调用原始然后根据他们回电话时设置的响应代码做我的事情(因为他们不会打电话我回来了).
有一个简单的方法吗?
将数据转储到响应流时如何指定文件名?
现在我正在做以下事情:
byte[] data= GetFoo();
Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/pdf";
Response.BinaryWrite(data);
Response.End();
Run Code Online (Sandbox Code Playgroud)
使用上面的代码,我得到"foo.aspx.pdf"作为要保存的文件名.我似乎记得能够在响应中添加标头以指定要保存的文件名.
我正在使用Fiddler Web Debugger工具版本4.4.4.8.
我已向www.google.com提出请求,fiddler会显示已发送请求并收到回复.
我如何知道并显示何时发送请求以及何时收到响应?开头/结束日期不在Fiddler的左栏中.
有什么设置吗?
我看到有一些计时器:http://fiddler.wikidot.com/timers
如何显示/使用它们?
我安装了Xdebug,一切都很好,直到它突然停止工作.phpinfo()为所有变量提供了一个很好的XDebug输出.
php -m | grep deb
Run Code Online (Sandbox Code Playgroud)
还提供两次XDebug(对于Zend和PHP),所以再次看起来很好.我的php.ini有这些行:
zend_extension=/usr/lib/php5/20090626/xdebug.so
;extension=xdebug.so
xdebug.remote_host=localhost
xdebug.remote_enable=on
xdebug.remote_port=9001
xdebug.remote_handler=dbgp
xdebug.remote_connect_back=1
Run Code Online (Sandbox Code Playgroud)
然而,当运行此代码时,应检查XDebug(来自Netbeans文档),它只是卡住了.所以没有IDE正在使用XDebug.
<?php
$address = '127.0.0.1';
$port = 9001;
$sock = socket_create(AF_INET, SOCK_STREAM, 0);
socket_bind($sock, $address, $port) or die('Unable to bind');
socket_listen($sock);
$client = socket_accept($sock);
echo "connection established: $client";
socket_close($client);
socket_close($sock);
Run Code Online (Sandbox Code Playgroud)
另外,根据XDebug的安装,我走了两步.我的配置有什么问题?谢谢.
我正在编写一个小应用程序,它提供来自本地计算机的图像,因此它们可以作为http:// localhost:12345/something/something(返回jpeg)进行访问.
如何强制浏览器缓存它,因此只有一个请求将被发送到服务器.这个标题是否足够
HTTP/1.1 200 OK
Cache-Control: public, max-age=99936000
Content-Length: 123456
Content-Type: image/jpeg
Run Code Online (Sandbox Code Playgroud)
这似乎与Firefox 3.x一起使用,但是对于其他浏览器来说它是否足够全球?
在我的restful webservice中,如果出现错误请求(5xx)或4xx respose代码,我会在响应中写一个自定义标题"x-app-err-id".
在客户端,我使用RestTemplate的交换方法来进行RestFul Web服务调用.当响应代码为2xx时,一切都很好.
ResponseEntity<Component> response = restTemplate.exchange(webSvcURL,
HttpMethod.POST,
requestEntity,
Component.class);
Run Code Online (Sandbox Code Playgroud)
但是如果有异常(HttpStatusCodeException),因为它是一个错误的请求(5xx)或4xx,在HttpStatusCodeException的catch块中,我得到响应(见上文)为null,所以我没有访问我的自定义头我在我的网络服务中设置.如果RestTemplate中存在异常,如何从响应中获取自定义标头.
还有一个问题是,我在错误的情况下在响应体中设置了一个错误对象(json),我想知道如何在RestTemplate中出现异常时访问响应体
花了一个小时的时间试图找出地球上的原因(coffeescript)
$.ajax
accepts: "application/json; charset=utf-8"
Run Code Online (Sandbox Code Playgroud)
没有绝对没有改变接受头,而这
$.ajax
dataType: "json"
Run Code Online (Sandbox Code Playgroud)
正确设置接受标头 application/json; charset=utf-8
我完全糊涂了,我错过了什么,或者是全年愚人节开玩笑的接受因素?
我希望这是一个我希望的快速问题.我需要编写一些报告,然后提示用户将其保存到他/她的本地计算机.我最后一次这样做,我写了一个文件到网络服务器,然后通过Response对象发送到客户端.
在Web服务器上创建
TextWriter tw = new StreamWriter(filePath);
Run Code Online (Sandbox Code Playgroud)
发送给客户
page.Response.WriteFile(path);
Run Code Online (Sandbox Code Playgroud)
问题是,有没有办法跳过将物理文件写入Web服务器并从表示文档的对象直接转到响应?
我需要根据我发布的参数将数据发布到URL(https://somesite.com)以在responseStrem中下载文件.如何使用C#控制台应用程序执行此操作?
参数:filename,userid,password,type