Tag: api design

ReST API:我应该将访问令牌与数据库中的用户关联起来吗?

我正在nodeJS服务器上构build安全的ReST API,以便我的Android应用程序可以访问我网站上的数据。 根据阅读一些其他职位,我已经明白,我应该使用访问令牌。 所以我的想法是做到以下几点: 1)当用户loginAndroid应用程序时,应用程序向我的网站上的/api/login发送一个请求,提供用户名和密码(这当然需要通过SSL来防止窃听)。 2)我的服务器validation用户名+密码是否匹配,如果是,则用访问令牌进行响应。 3)应用程序使用这个访问令牌来完成对我的API的所有后续请求。 我的问题是我应该存储访问令牌在我的服务器上的数据库? 具体而言,我是否应该存储访问令牌与特定用户关联的事实? 我看过的大多数教程都没有这样做,但是如果我不这样做,那么用这个访问令牌来修改或者查看另一个用户的数据是什么呢? 我不需要将访问令牌与数据库中的用户配对?

使用Shippo的节点发货API不起作用

我正在build立一个API,今天我把我的HTML表单集成到一起。 但是,它只是说'不能发布/新船'。 哪里不对? 我的server.js: var express = require('express') var app = express() var http = require('http'); //Shippo shipping wrapper var Raven = require('raven'); var shippo = require('shippo')('shippo_test_key'); const bodyParser = require('body-parser'); app.use(bodyParser.urlencoded({extended: true})); app.use(bodyParser.json()); //Test app.get('/', function (req, res) { res.send('Hello World! ' + 'hey') }) app.post('/newship/', function (req, res) { var addressFrom = { […]

使用JSON API序列化器来创build更复杂的JSON

这里的例子在解释如何生成一个更复杂的结构方面还不够… 如果我想结束这样的事情: { "data": { "type": "mobile_screens", "id": "1", "attributes": { "title": "Watch" }, "relationships": { "mobile_screen_components": { "data": [ { "id": "1_1", "type": "mobile_screen_components" }, { "id": "1_2", "type": "mobile_screen_components" }, … ] } } }, "included": [ { "id": "1_1", "type": "mobile_screen_components", "attributes": { "title": "Featured Playlist", "display_type": "shelf" }, "relationships": { "playlist": […]

如何处理REST API端点上的结果过滤?

我有一个Node.js REST API,通过node-mysql直接使用MySQL数据库。 我正在寻找一种方法来以最具性能的方式来过滤端点上的数据库结果。 目前,我有一个endpoint /api/v2/matches ,其中我的API代码查询数据库并输出结果作为JSON响应。 我打算在此端点上使用filter。 例如/api/v2/matches?filter[team]=TeamId 在我的代码中过滤这些数据库结果的最佳方式/最具性能的方式是什么? 我是不是该: 查询数据库的一切,并使用Array.prototype.filter()或类似的结果数组来正确地过滤数据。 以编程方式组装我的查询string,具体取决于在req.query.filters对象上传递的内容并查询数据库。 请记住,我目前对这个端点的查询(返回所有结果的那个)有一些INNER JOINS正在进行。 我在这个查询中也使用了LIMIT 50 。

Node.js APIdevise和路由处理

我不知道该怎么称呼这个,但是我是Node.js新手。 我只是在GitHub上find了一个整洁的REST API项目来实现,但我不知道如何将所有的GET和POST等分割成单独的文件。 我有一个单独的api.js文件 function API_ROUTER(router, connection, md5) { var self = this; self.handleRoutes(router, connection, md5); } API_ROUTER.prototype.handleRoutes = function(router, connection, md5) { router.get("/", function(req, res) { res.json({"Message" : "Hello World !"}); }); }; module.exports = API_ROUTER; 现在我怎么能创build一个兄弟other.js和使用: var api = require('./api.js'); // Create router.get, router.post etc. here?

为什么发送API状态码?

我用node.js构build我的第一个API,并想知道是否需要确保每个响应都发送一个状态码,或者只需使用一个布尔值就可以了。 对于安全还是其他? 所以代码明智: return res.status(403).send({ message: 'No token provided.' }); 与 return res.json({ success: false, message: 'No token provided.' }); 谢谢。