Tag: rest

Swagger可以根据现有的快递路线自动生成yaml吗?

我inheritance了一个现有的API,并且想用swagger来logging它,但我还不知道它的全部范围。 Swagger(或其他中间件/工具)是否可以根据现有的快速路线自动奇迹般地产生yaml(对于swagger)? 对于我在其他问题上看到的情况,看起来这主要是一项手工工作,但是我仔细检查这里是否有人find解决办法。

如何保护AJAX应用程序中的私人REST API

我知道发布了许多类似的问题,但是他们都没有提到用户可以访问代码的HTML / JavaScript应用程序。 我有一个用nodejs编写的私有REST API。 这是私人的,因为它的唯一目的是服务我的HTML5客户端应用程序(Chrome应用程序和Adobe Air应用程序)。 所以API密钥不是一个好的解决scheme,因为任何用户都可以看到JavaScript代码。 我想避免机器人在我的服务器上创build帐户,并消耗我的资源。 有什么办法来实现这个吗?

如何使用Advanced REST Client或PostmantestingExpress / node REST API后端?

我需要testing我的REST API后端接受JSON与先进的REST客户端或Postman为Chrome。 但是我遇到了问题:我只能使用内置表单发送请求,并使用Content-Type:application / x-www-form-urlencoded 但是这样做不起作用,因为我embedded了文档,例如, 我需要POST这个 : {title:"Awesome post!", tags: ["blue", "jeans"] } Chrome扩展的内置表单无法实现。 当我selectRaw Body并在其中插入内容时,我的后端将req.body视为一个空对象。 当我还设置标题“Content-Type:application / json”时,我在后端得到以下错误: SyntaxError: Unexpected token n at Object.parse (native) at IncomingMessage.exports.parse.application/json (/Library/WebServer/Documents/slipfeed/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js:135:16) at IncomingMessage.EventEmitter.emit (events.js:85:17) at IncomingMessage._emitEnd (http.js:366:10) at HTTPParser.parserOnMessageComplete [as onMessageComplete] (http.js:149:23) at Socket.socket.ondata (http.js:1682:22) at TCP.onread (net.js:404:27) 注:我在我的应用程序的configuration中使用bodyParser()和methodOverride()。 禁用他们没有帮助。 我应该使用哪些设置,以便我可以将JSONinput到原始正文字段,并且请求会起作用? 为了澄清答案:我必须设置Content-Type:application / json(在请求标题中)并使用格式良好的json,其中属性名称也在双引号内部以使其工作。

如何在JWT中使用jti声明

JWT规范提到了一个jti声明,据称这个声明可以作为随机数来防止重播攻击: JTI(JWT ID)声明为JWT提供了一个唯一的标识符。 标识符值必须以确保相同值被偶然分配给不同数据对象的可能性可以忽略的方式分配; 如果应用程序使用多个发行者,则必须防止不同发行者产生的值之间的冲突。 jti声明可用于防止重播JWT。 jti值是区分大小写的string。 使用这个声明是可选的。 我的问题是如何去执行这个? 我是否需要存储以前使用的jtis,并在每次请求时发布新的JWT? 如果是这样,这是否不符合智威汤逊的目的? 为什么使用JWT而不是将随机生成的会话ID存储在数据库中? 我的REST API有一个mongo数据库,我不反对增加一个redis实例。 有比JWT更好的身份validation选项吗? 我主要是不想在客户端存储消除HTTPauthentication的密码作为一个选项,但是,当我深入到这个JWT的东西,我开始感觉,如果自定义令牌实施或不同的标准可能会更好满足我的需求。 是否有任何节点/快递包基于令牌的authentication,支持令牌吊销和旋转令牌? 将不胜感激任何意见。

在restify 1.xx中如何访问数据?

我将数据发布到restify API,但找不到任何有关如何访问发布数据的当前示例。 这个怎么用?

Node.JS等待发出HTTP请求的REST Service的callback

我使用express模块​​在Node.JS中创build一个Restful API。 在我的服务中,我正在向外部端点(服务器端)发出额外的http请求,并且需要将这些http请求中的数据返回给我的Web服务请求主体。 我已经确认,如果我在Web服务正在执行的所有操作上使用console.log ,我正在获取所需的数据。 但是,当我尝试将这些值返回给服务时,他们将返回空值。 我知道这是因为asynchronous和callback不等待http请求完成。 有没有办法做到这一点?

保护我的Node.js应用程序的REST API?

我可以在我的REST API上做一些帮助。 我正在写一个Node.js应用程序,它使用Express,MongoDB,并在客户端有Backbone.js。 我花了最后两天试图解决所有这些,没有太多的运气。 我已经检查过 保护REST API 使用OAuth保护我的REST API,同时仍允许通过第三方OAuth提供者进行身份validation(使用DotNetOpenAuth) http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/ http://tesoriere.com/2011/10/10/node.js-getting-oauth-up-and-working-using-express.js-and-railway.js/ 我想保持我的后端和前端尽可能分开,所以我想使用精心devise的REST API会很好。 我的想法是,如果我花时间去开发一个iPhone应用程序(或类似的东西),它可以使用API​​来访问数据。 但是,我希望这是安全的。 用户已经login到我的networking应用程序,我想确保我的API是安全的。 我读了关于OAuth,OAuth 2.0,OpenID,Hmac,哈希等…我想避免使用外部login(Facebook / Twitter /等)我想注册和login在我的应用程序/服务器。 …但我仍然在这里困惑。 也许是在深夜,或者我的大脑只是被炸,但我真的可以采取一些措施,在这里做什么。 我有什么步骤来创build一个安全的API? 任何帮助,任何信息,任何示例,步骤或任何东西都会很棒。 请帮忙!

正确的方法来设置响应状态和JSON内容的REST API使用nodejs和express

我正在玩Nodejs,并通过构build一个小的restAPI来expression。 我的问题是,设置代码状态以及响应数据的最佳做法/最佳方法是什么? 让我用一点代码解释一下(我不会把启动服务器所需的节点和expression式代码,只是所关心的路由器方法): router.get('/users/:id', function(req, res, next) { var user = users.getUserById(req.params.id); res.json(user); }); exports.getUserById = function(id) { for (var i = 0; i < users.length; i++) { if (users[i].id == id) return users[i]; } }; 下面的代码完美的工作,当发送邮递员的请求时,我得到以下结果: 正如你所看到的,状态显示200,这是OK的。 但这是做到这一点的最好方法吗? 有没有这样的情况,我应该自己设置状态,以及返回的JSON? 还是总是用快递处理? 例如,我刚做了一个快速testing,稍微修改了上面的get方法: router.get('/users/:id', function(req, res, next) { var user = users.getUserById(req.params.id); if (user == null […]

允许CORS REST请求到Heroku上的Express / Node.js应用程序

我在node.js的快速框架上编写了一个REST API,这个框架适用于Chrome中js控制台的请求和URL栏等等。我现在试图让它适用于来自另一个应用程序的请求域(CORS)。 第一个由javascript前端自动创build的请求是/ api / search?uri =,并且在“预检”选项请求中显示为失败。 在我的快速应用程序中,我添加CORS标题,使用: var allowCrossDomain = function(req, res, next) { res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS'); res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With'); // intercept OPTIONS method if ('OPTIONS' == req.method) { res.send(200); } else { next(); } }; 和: app.configure(function () { app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); app.use(allowCrossDomain); app.use(express.static(path.join(application_root, "public"))); app.use(express.errorHandler({ dumpExceptions: true, showStack: true […]