Tag: rest

如何在REST API中使用多个字段进行search

我想执行一个search请求,如https://api.mywebsite.com/users/search?firstname=jo&lastname=smit&date_of_birth=1980 我有一个用户架构,如: var UserSchema = new mongoose.Schema({ role: { type: String, default: 'user' }, firstname: { type: String, default: null }, lastname: { type: String, default: null }, date_of_birth: { type: Date, default: null, select: false }, }); 我到目前为止使用的是stackoverflow帮助 : // check every element in the query and perform check function function search_t(query) { return […]

现代Web应用程序中的“API第一架构”是什么?

我试着去理解应用于Web应用的API第一个体系结构,并在这里find了一些信息, 一个单独的REST后端API的优点? 下面我附上一个更好的答案的例子。 我开始使用Angular.js作为前端。 Node.js,Express.js服务器。 文件夹结构 |– server.js |– app |– models |– views |– index.html |– about.html |– contact.html |– controllers |– app.js |– node-modules app文件夹是angular度应用程序的MVC结构。 所有的POST GET PUT DELETE,MongoDB,Redis连接都在server.js中。 但是当服务器文件变大时,组织这些业务逻辑的最好方法是什么? server.js上没有设置视图引擎。 如果我在express中创build“路由”文件夹,这实际上是执行一个API的第一个概念吗? 比方说,当用户点击一个button直接从浏览器提交表单时,在这种情况下,服务器是否负责表示层? 的index.html <form method='POST' action='/register'> // some code here.. <button type='submit'>submit</button></form> server.js var rootPath = './app/views' router.post('/register' (req, res) =>{ // […]

rest参数之间的差异

我为基于[OAS]的 rest APIdevise了一个API文档,只有4个参数可以in指示参数位置的字段中通过。 但在代码中我得到如下参数: req.body 现在它不应该有body领域? 应该写什么而不是body query , path和cookie之间有什么不同?

在具有节点宁静的多列上查找

我在这里有几个问题。 我正在尝试节点宁静 。 我有一个集合,如下所示 { "_id": "59de06427f04284a1601e8bd", "name": "Thabung", "region": "59de03667f04284a1601e58f", "__v": 1, "branches": [ { "name": "XYZ", "_id": "59de070a7f04284a1601e8be", "address": { "street": "FairyStreet", "country": "ABC", "city": "BLL", "zip": "123456" }, "customerCodes": [ "ccd", "xyz" ] } ] } 现在,如果我传递了像apiendpoint/?branches.name=XYZ这样的查询, apiendpoint/?branches.name=XYZ可以工作。 但是,如果我尝试apiendpoint/?branches.customerCodes=ccd它不匹配。 请注意branches.customerCodes是一个数组 另外我想匹配多个领域的东西 apiendpoint/?fieldone=XYZ&fieldtwo=abc ,我应该如何进行?

Jasper Rest API,运行报告

我目前正在试图运行一个报告感谢Jasper Rest API并获得输出(PDF),文档的interessant部分在这里 所以我试过这个: http://localhost:8080/jasperserver/rest/report/reports/samples/report_mongodb_new_basic 知道我的报告在报告/样本中,其资源ID是: report_mongodb_new_basic 所以我仍然试图运行它与nodejs这里是我的代码:(请求是一个nodejs模块在这里可用) login : var request = require("request"); request.post({url: "http://localhost:8080/jasperserver/rest/login", qs: {j_username: "jasperadmin", j_password: "jasperadmin"}}, function(err, res, body) { if(err) { return console.error(err); } login后,作为文档显示我需要做一个PUT请求来运行报告: request.put("http://localhost:8080/jasperserver/rest /report/reports/samples/report_mongodb_new_basic") 这当然不是,即使当我直接用Firefox浏览这个url时,它也是这样说的 "Report not found (uuid not found in session)" 由于这个PUT请求,uuid应该被创build 那么,URL的好语法和一个PUT请求获得uuid的好语法是什么?

基于REST / Web的身份validation即服务的可能性?

我使用Express开发了一个基于REST的服务,最初开始自己实现身份validation。 简单的用户名/密码authentication在哪里 密码使用BCryptencryption 用户信息+散列密码存储在mongoDB中 密码validation检查完成。 authentication令牌(有限的TTL)被生成/validation 我对Node.JS有一些了解,但还不足以让我感觉舒服一点,就是推出我自己的身份validation(login/注册)机制。 出于这个原因,我想用别的东西取代我的内部机制。 有东西被certificate,可扩展,可插拔和易于使用。 考虑到基于Node.JS的安全网站/ REST API的数量,我确信有人或公司必须提供的开箱即用的解决scheme可以使服务实现者快速启动并运行,而无需担心安全性/用户方面。 我正在寻找一个比passport或者everyauth图书馆even higher level of abstraction 。 一些提供开箱即用的function,能够满足我的要求,包括: 提供login页面/注册页面/configuration文件页面 不同的authentication模块(谷歌,脸谱,Github,….) 在数据存储(mongoDB)中存储用户信息(如果需要,需要+证书)。 记住我 忘记密码/重置密码 所以这里的问题是: 是否有可用的提供比护照/ everyauth / …更高的抽象级别的解决scheme? 如果有的话,你会推荐一些这种现成的解决scheme吗? 我是否应该忘记outsourcing my user authentication的概念,并开始查看护照和outsourcing my user authentication ,并开始使用这些库实现我的要求? 是否可以专注于我的业务逻辑,而不用担心有关用户身份validation的任何方面(写入login/注册页面,实现忘记密码/重置密码stream程,将用户信息存储在数据库中)。

如何将node.js合并到javatesting中?

我在看Mercado Libre Java SDK ,注意到他们的资源库中有一个名为“mockapi”的文件夹。 看起来他们已经用JavaScript编写了一个完整的模拟API,用来testing他们的Java客户端。 但是,我还是不太明白它是如何工作的。 我已经发布了一些在app.js中使用的javascript来做到这一点。 var express = require('express'); var fs = require('fs'); var app = express.createServer(); app.configure(function(){ app.use(express.methodOverride()); app.use(express.bodyParser()); }); app.post('/oauth/token', function(req, res) { if(req.query["grant_type"]=="authorization_code") { if(req.query["code"]=="bad code") { res.send({"message":"Error validando el parámetro code","error":"invalid_grant","status":400,"cause":[]}, 400); } else if(req.query["code"]=="valid code without refresh token") { res.send({ "access_token" : "valid token", "token_type" : "bearer", […]

将会话密钥存储在本地存储中

好的,我有一个用node.js编写的API,我试图添加会话function。 API是完整的RESTful。 当用户login时,我通过GET ajax调用向/ login端点发送用户/传递组合。 服务器然后盐的密码,并将其与我的mongo数据库中存储的哈希比较。 然后根据login的成功情况,它会以真或假回应。 我想实现的是这样的:当用户input一个有效的login时,服务器生成一个会话密钥。 这个密钥存储在用户文档中的mongo中。 这个会话密钥然后与GET请求一起返回。 这个会话密钥将被包含在所有未来请求的JSON体中,以允许用户访问他们的账户信息。 我的问题:是否安全的存储这个会话密钥在浏览器的localStorage或sessionStorage? 这会打开用户的任何漏洞?

Node.js API – 允许用户只更新和删除自己的对象

我正在尝试使用Node.js w / Express构build一个RESTful API。 我对MEAN堆栈相当陌生,并且想要使用最佳实践。 我很难理解和实现的概念如下: 限制用户对象上的PUT和DELETE等路由,仅允许拥有此对象的用户的请求。 我想到的一种可能性: 为与数据库中的令牌匹配的用户创build秘密令牌 所以当创build一个用户的时候,我给他们分配一个令牌,把它存储在数据库中,并把它附加到他们的会话数据上 然后我的中间件看起来像这样: router.put('/api/users/:user_id', function(req, res, next) { // already unclear how this token should be transfered var token = req.headers['x-access-token'] || req.session.token; // update user (PUT /api/users/:user_id) User.findById(req.params.user_id, function(err, user) { if (err) { res.send(err); } else if (user.token != token) { res.json({ sucess: false, […]

Loopback.iorest连接器 – json发布不工作

我试图用loopback-rest-connector代理一个rest服务。 远程rest服务方法是POST,需要一个参数。 当我用查询string调用环回端点时,一切正常。 当我与身体json对象调用服务时,我得到的错误是所需的variables是未定义的,但参数是在对象ctx.req.body内。 回环没有看到它们。 我试图添加bodyparser中间件,但它也没有工作。 Datasource.js { "db": { "name": "db", "connector": "memory", "file": "db.json" }, "rest": { "name": "rest", "connector": "rest" }, "geoRest": { "connector": "rest", "debug": "true", "operations": [{ "template": { "method": "POST", "url": "https://url/endpoint", "headers": { "accept": "application/json", "content-type": "application/json", "Authorization": "sdfsdf" }, "body": { "address": "{^address:string}", "country": "{country:string}" } }, […]