Tag: api

Node.js:如何testing我的API,嘲笑我的API调用的第三方API

我正在开发一个RESTful Node.js API(express + mongoose)这个API调用第三方Oauth API(谷歌,脸谱,不pipe)。 我一直很高兴使用mocha + chai +请求设置自动化testing,但是我无法模拟第三方API来testing调用它的路由(我的API)。 我已经尝试过使用nock,但是它不适用于我的用例。 为了运行我的testing,我开始我的API( npm start ),并在另一个选项卡中启动testing套件( npm test )。 testing套件使用请求通过HTTPtestingAPI。 因此我认为nock在这里不起作用,因为它在'testing套件'过程中嘲弄http,而不是在'API'过程中。 我绝对需要嘲笑这个第三方调用,原因有两个:1.我希望能够在我的笔记本电脑上运行我所有的testing套件。2.由于第三方API使用Oauth,testing套件中的硬编码证书即使是一个testing帐户)似乎并不太容易。 我真的很喜欢不要在我的testing报道中留下这个巨大的漏洞,所以任何build议都会大大降低!

当使用方法:POST时,AngularJS $资源调用错误的API URL

放入标题不是最简单的问题。 无论如何,我的应用程序是build立在nodejs / expressjs并且为这个url设置了一个API: 编辑:我正在使用的当前代码是: $scope.updateProduct = $resource('/api/updateProduct/:product/:param/:value',{},{ query: {method:'GET'}, post: {method:'POST'}, save: {method:'PUT', params: {brand: '@brand', param:'@param', value:'@value'}}, remove: {method:'DELETE'} }); $scope.updateProduct.save({ product : $scope.post._id, param: 'likes', value: $scope.user._id }); 目前它调用/api/updateProduct而不是/api/updateProduct/<product>/<param>/<value>就像我执行$scope.updateProduct.get()时的$scope.updateProduct.get() 。 在我的控制台中,我看到(作为一个例子): PUT /api/updateBrand/Quay%20Eyewear%20Australia/userTags/sunglasses,%20classic 200 30ms – 2.31kb 但是,API实际上没有被访问/没有任何反应。 有趣的是,如果我在我的浏览器中访问localhost:5000/api/updateBrand/Quay%20Eyewear%20Australia/userTags/sunglasses,%20classic ,它会发布正确的数据并更新我的数据库中的产品,所以肯定是$resource被调用的方式。

使用基本身份validation标头向外部API表示API代理请求

我已经build立了一个API使用node.js和expression。 但我需要能够代理一些特定的路由到外部服务器的请求,并显示从外部服务器响应请求的clint。 但是我也需要转发客户端发送的基本身份validation请求。 我曾尝试使用请求模块,如: app.get('/c/users/', function(req,res) { //modify the url in any way you want var newurl = 'https://www.external.com' request(newurl).pipe(res), }) 但似乎不发送基本的身份validation标题,因为我得到“403禁止”从外部服务器(www.external.com) 请求正在做,看起来像: GET http://example.se:4000/c/users/ HTTP/1.1 Accept-Encoding: gzip,deflate X-version: 1 Authorization: Basic bmR4ZHpzNWZweWFpdjdxfG1vcmV1c2*******= Accept: application/json Host: example.se:4000 Connection: Keep-Alive User-Agent: Apache-HttpClient/4.1.1 (java 1.5) 如果我做的是完全相同的请求,但直接对www.external.com,所以有一些问题,当在代理节点。

与正常路线一起使用Swagger Express

我有兴趣使用像swagger-node-express这样的东西为我正在开发的项目构buildAPI。 但是,该应用程序的某些部分是非基于API(改为提供HTML)。 有没有人有任何想法,我将如何使用Swagger旁边的正常路线?

function/集成testingNodeJS ReST API实现

我已经使用mongoose和expression构build了一个NodeJS应用程序。 这个应用程序以ReSTful方式公开资源,我正在尝试构build一套function/集成testing。 这个套件在执行时,应该在一个独立的环境(在本地主机上运行很好)中启动我的应用程序,并使用自定义的configuration设置(可作为环境variables提供的path)。 任何其他自定义设置操作都应该执行。 在完成一系列testing之后,应该删除(mongodb)数据库,并执行任何自定义的拆卸操作。 有什么NodeJS框架/模块/等等来帮助实现这个目标? 谢谢,Tharsan

api调用Nodejs之间的延迟

我正在使用Nodejs来实现一个Web应用程序。 我有一个对象的列表,我想调用这些对象的每个第三方API。 问题是api有速率限制,所以根据我的计算,我必须每1.5秒调用一次api。 我尝试使用setTimeout方法,但它不适用于循环。 我也看了一下Cron模块,但它不能帮助我,因为我只想每个对象调用一次api。 谁能帮我这个。 这里是我的代码在服务器端: for(var obj in list) { setTimeout(function() { apicall(); }, 1500); }

testing一个Postman API的调用

这是我在nodejs中的API路由: router.get('/reset/:token', function(req, res) { User.findOne({ resetPasswordToken: req.params.token, resetPasswordExpires: { $gt: Date.now() } }, function(err, user) { if (!user) { res.json('Password reset token is invalid or has expired.'); //return res.j('/forgot'); } res.json('Goed'); }); }); 现在,当我想在邮递员testing这个,我用这个不正确的方式: 邮递员截图 我通常不用params工作,我怎么testing这个?

Expressjs路由器基于Content-Type头

对于路由,我希望我的中间件将请求传递到/ html文件夹中定义的路由到服务器HTML(ejs),如果Content-Type是application / json,则使用/ api文件夹中定义的路由。 但是我不想在每条路线上都定义这一点。 所以我不是在寻找定义一些req.api属性的中间件,我可以在每个路由中检查它 app.get('/', function(req, res) { if(req.api_call) { // serve api } else { // serve html } }); 但是我想要这样的东西: // HTML folder app.get('/', function(req, res) { res.send('hi'); }); // API folder app.get('/', function(req, res) { res.json({message: 'hi'}); }); 这是可能的,如果是这样,我该怎么做? 我希望能够像这样工作: app.use(checkApiCall, apiRouter); app.use(checkHTMLCall, htmlRouter);

PHP与Node REST-API

我正在构build一个简单的REST-API,它有一个端点,这个端点会被深度渗透。 我们称之为POST /message 。 我必须决定使用Node还是PHP。 数据库是MySQL。 在这条路线中会发生什么: – 通过HTTP-Auth的证书将通过从数据库中读取来进行检查。 – 请求另一个REST-API。 – 将执行另一个写入数据库操作。 所以有2个数据库连接和一个到另一个REST-API的http请求。 路线应该都是有速度的。 我会去PHP,因为目前的系统是基于PHP的,但路由内的请求会吓到我,导致它不是使用PHP时asynchronous。 我不关心这个请求的结果,并且在节点中,我可以只检查凭证并返回success ,asynchronous发送请求并在请求返回后执行数据库写入性能。 我不认为我可以在PHP中这样做,因为当我返回REST调用success ,一切都必须先完成,对吧? 去PHP或节点?

以编程方式获取无线接入点的列表

这是一个普遍的编程问题,虽然我更喜欢Node.js – 解决scheme。 是否有任何JavaScript或.NET API来检索无线接入点列表及其关联数据(SSID,MAC地址等)? 我使用TamperData来查看当你与Firefox分享你的位置时会发生什么,并得到这个请求的URL: https://maps.googleapis.com/maps/api/browserlocation/json?browser=firefox&sensor=true&wifi=mac:b8-c7-5d-07-6e-cf|ssid:TV2 Network|ss:-58&wifi=mac:00-13-10-8d-a7-32|ssid:LUBIN|ss:-61&wifi=mac:62-4c-fe-9c-08-18|ssid:airportthru|ss:-73&wifi=mac:00-24-93-0c-49-e0|ssid:Custom Gifts Memphis|ss:-87&wifi=mac:98-fc-11-69-35-46|ssid:linksys|ss:-87&wifi=mac:00-0f-cc-6d-ba-ac|ssid:3333|ss:-88&wifi=mac:40-b7-f3-5b-2c-60|ssid:ATT456|ss:-88&wifi=mac:00-c0-02-7d-5f-4e|ssid:iHub_0060350392e0|ss:-89&wifi=mac:00-24-b2-d5-df-9a|ssid:Memphis CPA|ss:-89&wifi=mac:06-02-6f-c3-06-27|ssid:3333|ss:-89&wifi=mac:00-27-0d-55-c3-20|ssid:custard|ss:-90&wifi=mac:a2-a1-15-0d-a8-68|ssid:SETUP|ss:-90&wifi=mac:00-0f-cc-76-5b-2c|ssid:3545 2340|ss:-92&wifi=mac:c0-3f-0e-6e-ac-34|ssid:patricia|ss:-92 …它被执行时,返回一个JSON对象,正是我正在寻找的: 纬度和经度坐标 。 这个例子的对象是: { "accuracy" : 49.0, "location" : { "lat" : 35.06993630, "lng" : -89.88568730 }, "status" : "OK" } CURIOUS:这里的准确度如何? 我相当肯定,这不是一个百分比,因为其他请求列表less访问点返回一个更高的整数。 例如,当除了第一个列出的每个WAP之外,我得到一个43000.0的准确性。 我一直在研究Node版本的猎物与一个类似的Google服务交互的方式,它遵循同样的方式来传递一个WAPs及其信息列表。 我试图提取他们的代码,完成这个任务的位,但我有麻烦,甚至让项目正常运行。 如果有人有任何信息,我将不胜感激,因为我有一个很好的项目,使用这种技术。 谢谢!