Sails.js 如何以api蓝图格式描述会话?

Sails.js 如何以api蓝图格式描述会话?,sails.js,apiblueprint,apiary.io,apiary,dredd,Sails.js,Apiblueprint,Apiary.io,Apiary,Dredd,我目前正试图描述一个现有的API。系统通过返回包含会话id的http cookie的登录请求来实现身份验证 据我所知,浏览器在发出另一个请求时,会将以前从主机收到的所有http cookie发送回给他,这是标准的 在运行由蓝图文件生成的测试时,这似乎不是由Dredd完成的。因此,任何需要用户登录的请求在测试中都无法正常工作 是否有可能将请求分别标记为“运行此请求前需要”,以强制Dredd管理这些http cookie 顺便说一句,REST服务是在Sails.js中实现的,这是一个针对node.j

我目前正试图描述一个现有的API。系统通过返回包含会话id的http cookie的登录请求来实现身份验证

据我所知,浏览器在发出另一个请求时,会将以前从主机收到的所有http cookie发送回给他,这是标准的

在运行由蓝图文件生成的测试时,这似乎不是由Dredd完成的。因此,任何需要用户登录的请求在测试中都无法正常工作

是否有可能将请求分别标记为“运行此请求前需要”,以强制Dredd管理这些http cookie


顺便说一句,REST服务是在
Sails.js
中实现的,这是一个针对
node.js

的mvc框架,Dredd是针对测试环境设置运行的,例如在带有测试夹具的CI工具中。它不应该在生产环境中运行

尽管如此,在测试端点时可能偶尔需要执行设置或拆卸操作。计划最终提供


如果您需要安装/拆卸功能,您可以使用讨论过的Dredd“挂钩”。

这是一个老问题,但我刚刚遇到了同样的问题,Dredd文档已经过时了(这不是很讽刺吗?!),因此,既然我想出来了,这可能会对某人有所帮助:)

您可以使用(这是我在主题中找到的最新页面,但仍然存在问题和拼写错误)读取和覆盖响应和请求正文和标题。一个警告是,dredd似乎没有cookie的帮助程序,所以您必须自己解析和构建cookie头

在我的例子中,
sessionId
作为cookie返回到json主体中:我解析主体,因为这更简单,但是如果需要,您可以从响应cookie中检索会话。下面是我为使auth正常工作而编写的一些钩子:

hooks = require('hooks');
stash = {}

// hook to retrieve session on a login
hooks.after('Auth > /remoteauth/userpass > POST', function(transaction){
  stash['token'] = JSON.parse(transaction.real.body)['sessionId'];
});

// hook to set the session cookie in all following requests
hooks.beforeEach(function(transaction){
  if(stash['token'] != undefined){
    transaction.request['headers']['Cookie'] = "id=" + stash['token']
  };
});
解释如何设置钩子,尽管有一件事让我感到困惑,那就是如果在同一个目录中有一个
dredd.yml
文件,那么
dredd--names
命令就不起作用(似乎该文件的存在使dredd忽略了所有命令行参数)