Tag: rest

NodeJS POST请求通过JSON-RPC

我试图通过JSON-RPC在我的NodeJS服务器上执行POST请求。 转换下面的curl命令: curl -X POST –data '{"jsonrpc":"2.0","method":"personal_newAccount","params":["pass"],"id":74}' http://localhost:8545 在NodeJS中,我一直在收到: 200 {"id":-1,"jsonrpc":"2.0","error":{"code":-32600,"message":"Could not decode request"}} 在标题中,我指定了Content-Type。 如果有人能指出我没有指定什么,以及如何添加它,将不胜感激。 var headers = { 'User-Agent': 'Super Agent/0.0.1', 'Content-Type': 'application/json-rpc', 'Accept':'application/json-rpc' } var options = { url: "http://localhost:8545", method: 'POST', headers: headers, form: {"jsonrpc":"2.0","method":"personal_newAccount","params":["pass"],"id":1} } request(options, function (error, response, body) { if (!error && response.statusCode == 200) { res.writeHeader(200, {"Content-Type": […]

Sails.js – 使用login,而不是id为REST api

我正在使用Sails.js框架,并有login字段的User模型。 我也有User控制器,允许我发送请求 http://localhost:1337/user/:id 它返回给定的用户数据。 不过,我宁愿使用用户login,而不是用户名,所以我可以使用/user/mylogin而不是/user/564a0aacecf0e8fb20c38a4e 。 有没有办法做到这一点,而无需自己创build路线(我喜欢帆如何处理所有的默认路线,包括/user/:id/comments这样的关系,我不想重build所有这些只是使用login,而不是id)

使用Angular routeProvider和Express路线

我正在尝试使angular的routeProviderpipe理我的应用程序的所有路线。 我在angular(客户端)的app.js文件中相应地定义了我的路由: (function(){ var app = angular.module("Crowdsourcing", ["ngRoute"]); app.config(function($routeProvider){ $routeProvider .when("/single/:street/:buildingNumber/:apartmentNumber", { templateUrl: "/views/single.html'", controller: "ListingCtrl" }) .otherwise({redirectTo:"/"}); }); }()); 然而,当在浏览器上写入一个URL(例如/ single)时,试图由我的后端express / node api来处理这个请求。 因此,它不会被find,因为后端路由是例如/ api / foo。 我如何确保Angular的routeProvider始终pipe理我的请求? 更重要的是应用程序的基本stream程是什么? 当客户端编写一个URL时,应用程序如何知道url是由express js还是由routeProvider处理?

Rest API – 在JSON响应中获取密码是安全的吗?

我正在用Node.js编写Rest API,并使用JWT。 我有下面的路线来validation用户。 我想问,从User.findOne方法返回的用户返回正确的密码,因此我能够检查它是否正确。 但是,这是安全的吗? 我做了一个console.log,并显示密码(尽pipeencryption),但仍然感到不安全,因为有人可以肯定地查看? router.post('/authenticate', function(req, res) { // find the user User.findOne({ name: req.body.name }, function(err, user) { if (err) throw err; if (!user) { res.json({ success: false, message: 'Authentication failed. User not found.' }); } else if (user) { // check if password matches if (user.password != req.body.password) { res.json({ success: […]

从REST API中调用REST Api(Node.js)

这可能是一个愚蠢的问题,但我是相当新的Node / REST,并找不到答案。 假设有一个请求A要求对象A('.. /学生/:学生ID')。 还有另一个请求B要求对象B('… /讲座/:讲座ID')。 现在对象B将包含关于讲座的一些信息,而且包含参加讲座的学生。 现在我可以想到组装对象B的三种方法: 1:从Resquest B的处理中多次呼叫请求A. 2:复制并粘贴来自请求A处理的代码 3:创build一个访问数据库并将其附加到所有请求查询的对象: var dbAccessObject = require('./dbAccess'); app.use(function (req,res,next){ req.dbAccessObject = dbAccessObject; next(); )}; 你会select哪个选项? 还是有另一种更好的方法?

TypeError:无法读取未定义的属性“长度”?

我得到“TypeError:无法读取属性的'长度'未定义? 错误,当我尝试从保存在文件中的联系人中提取特定的联系人(提供电话号码)时。 exports.query = function(number) { var json_result = JSON.parse(read_json_file()); console.log(json_result); var result = json_result.result; for (var i = 0; i < result.length; i++) { var contact = result[i]; if (contact.primarycontactnumber === number) { return contact; } } return null; }; 我打电话给上面的代码: app.get('/contacts/:number', function(request, response) { response.setHeader('content-type', 'application/json'); response.end(JSON.stringify(contacts.query(request.params.number))); }); 我的read_json_file方法的代码是: function read_json_file() { var […]

发送来自android的使用'离子运行android'到nodejs本地主机服务器的请求

我正在使用'离子运行android'来运行我的设备上的离子应用程序,连接到我的笔记本电脑进行检查。 我也在笔记本电脑的localhost:3000端口上运行节点js服务器。 1)如何从我的设备上运行的离子应用程序发送请求到本地在我的笔记本电脑上运行的服务器。 2)什么是我需要发送请求的url? 是'localhost:3000'吗? 是我的实际IP(XXXX:3000)? 谢谢!

重新启动Node.Js应用程序会抛出EADDRINUSE错误

我知道我的问题重复。 标记为重复或任何内容之前,请完整阅读该问题。 我正在学习node.js来创buildrestapi和做得很好。一切都很顺利,直到我发现这个错误(EADDRINUSE)重新启动应用程序。 这个问题吃我宝贵的时间,但仍然无法find正确的修复。 如果应用程序第一次运行,它启动顺利,没有任何端口更改,由于某种原因,我们停止或重新启动应用程序这个错误信息,而从服务器抛出。 他们中的许多人build议只更改端口一切顺利,我也同意他们。但是,当服务器在全球范围内生效和使用时,您无法将端口更改为重新启动。 添加我的代码片段。 app.js var express = require('express'); // call express var app = express(); // define our app using express var bodyParser = require('body-parser'); var config = require('./Config/config.js'); var api = require('./apis/api'); // configure app to use bodyParser() // this will let us get the data from a POST app.use(bodyParser.urlencoded({ […]

JWT微服务体系结构中的身份validation

题 问题如何在微服务应用程序中创build身份validation服务,并让其他服务检查该令牌(JWT)并检索用户? 可能的scheme 我目前的想法是基于身份validation服务在用户身份validation后将{ token, user }插入到Redis中。 所有其他服务都可以在Redis中检查用户的Authorization: Bearer kdI8$dj$nD&…标头令牌。 如果token存在于Redis中,则用户通过身份validation。 如果token在Redis中不存在,则用户不会被authentication。 用户将{ username, password }发送至授权服务 Auth服务对凭证进行身份validation并检索{ token, user } Auth服务将{ token, user }插入到Redis中 用户使用{ token }向Service-1发送请求 Service-1在Redis中为{ token }装饰,并检索{ token, user } Service-1做它的事情,并发回{ data } 这种方法有没有可能的安全,逻辑或架构问题?

通过未定义的POST API的身体价值?

我正在使用mongoose在MEAN堆栈上构build一个API。 该API应该处理用户注册和身份validation。 为了testing这个,我使用扩展名为chrome的邮递员向/signup提交post请求。 app.use("/signup", bodyParser.urlencoded({ extended: false })); app.post("/signup", Auth.userExist, function (req, res, next) { if (!req.body.email || !req.body.password) { res.json({success: false, msg: 'Please pass name and password.'}); console.log("email: " + req.body.email); console.log("password: " + req.body.password); } else { //do create new user logic… res.json({success: true, msg: 'Successful created new user.'}); } }); 在这里,您可以看到我在向API发送请求的正文中发送的内容: 在控制台中,我得到这个: […]