标签: restful-architecture

REST安全设计在公开资源ID时的良好实践

在基于REST的系统上,"加密"资源ID的选项有哪些.

例如:

 /client/2
Run Code Online (Sandbox Code Playgroud)

可以访问

/client/SOMEHASHKEY
Run Code Online (Sandbox Code Playgroud)

我在想 :

1 - 拥有跟踪资源ID的数据库表以及相应的HASH,并在每个请求中查找它.这显然很难实现,并且相当多地增加了服务器的工作量.

2 - 有某种内部加密算法可以根据资源创建日期,资源ID和base64创建一个哈希值(显然不是最优的,但你明白了)

那么这种场景有很好的做法吗?你会推荐什么 ?

非常感谢

rest restful-url restful-architecture

6
推荐指数
1
解决办法
1682
查看次数

获取资源的 RESTful 方式,但如果尚不存在则创建它

对于我正在创建的 RESTful API,我需要有一些获取资源的功能,但如果它不存在,则创建它然后返回它。我不认为这应该是 GET 请求的默认行为。我可以在给 GET 请求的某个参数上启用此功能,但这似乎有点脏。

主要的一点是我只想为此做一个请求,因为这些请求将通过可能具有缓慢互联网连接的移动设备完成,所以我想尽可能地限制需要完成的请求。

我不确定这是否适合 RESTful 世界,但如果它不适合,它会让我失望,因为这意味着我必须对 REST 的想法进行一些修改。

有谁知道这样做的 RESTful 方式,或者不与 REST 理念冲突的漂亮方式?

api rest restful-architecture

6
推荐指数
1
解决办法
3620
查看次数

Codeigniter - 创建RESTful API

嘿所以我一直在尝试创建一个RESTful API使用codeigniter 2.1.4.

我是一名中级php程序员,最初辩论从头开始创建API.
然而,经过一些研究,在这里和谷歌上查看旧问题,我选择了几个教程和第三方库.
我在nettuts +上发现的最简单的一个.
这看起来是一个很好的解决方案,因为它使用了philsturgeon/codeigniter-restserver第三方库,但是它自己的教程是在2010年编写的.

经过进一步检查,我意识到使用这些库的大多数教程至少有2到3年的历史.这会引发任何问题吗?
我还可以在nettuts上关注教程+或者我应该编写自己的RESTful API吗?

php rest codeigniter codeigniter-2 restful-architecture

6
推荐指数
1
解决办法
1万
查看次数

如何处理来自REST服务的大量数据

我们正在使用返回大量数据的REST服务.在生产中,服务器硬件可以处理它.我需要通过获取本地计算机上的数据来测试REST服务,这些数据无法处理大量数据.我的本地机器是4G i5.每次我点击服务时,我都会出现内存异常.

response.getStatus() 返回200状态.但是在使用输入流读取器收集数据时,我得到了内存不足的异常.

BufferedReader br = new BufferedReader(new
InputStreamReader(newByteArrayInputStream(response.getEntity().getBytes())));
Run Code Online (Sandbox Code Playgroud)

有没有其他方法来收集数据而不会遇到内存异常?

我尝试将我的VM大小推到2G,但它仍然无效.

java rest web-services restful-url restful-architecture

6
推荐指数
1
解决办法
1万
查看次数

RESTFul平面层次结构与搜索资源的动态层次结构

我们正在创建REST API,目前我们有两种方法来定义资源.

基本上我们有Patients,Studies并且Imagesa Patientn Studies和a Studyn Images.

分层方法

/webapi/patients/0/studies/12/images 
Run Code Online (Sandbox Code Playgroud)

层次结构在URI中可见

要搜索所有图像,我们需要搜索资源

 /webapi/search?q=imageName:mountain
Run Code Online (Sandbox Code Playgroud)

扁平的方法

/webapi/patients/0
/webapi/studies/12
/webapi/images/
Run Code Online (Sandbox Code Playgroud)

层次结构由属性完成(例如,study 12具有patientId0).

要搜索所有图像,我们可以搜索资源本身:

 /webapi/images?q=imageName:mountain
Run Code Online (Sandbox Code Playgroud)

是否有最佳实践方法或者是否有人遇到类似的情况?是一个搜索资源REST还是在平面方法中图像的关系不可见是不好的.

我们还需要考虑移动和修改.

rest uri restful-architecture

6
推荐指数
2
解决办法
1616
查看次数

在OSI层可以是REST api

也许我有一个愚蠢的问题,但我试图在OSI层之间分类REST api.(面试问题)它必须在5到7层之间,面试官说:它在5层,因为它类似于RPC.

但在我看来它不能在5会话层,因为真正的REST api是无状态的,不像会话(http会话),所以在我看来,它可以作为协议来自7应用层,因为它就像http(但为什么不在6? ).

我在互联网上搜索一些资源,但我找不到明确的答案.(我知道在OSI中放置的协议并不清楚)但也许您对此有好的看法?

rest osi restful-architecture

6
推荐指数
2
解决办法
4740
查看次数

如何处理REST API中的关系

我试图了解如何处理REST中的关系.

我读过这个问题.

如果我有司机汽车在我的API和驱动程序如果连接到一个只能存在我会让司机在子资源汽车.CarDriver之间的关系包含一组属性,比如说averageSpeedtimeOnTheRoad.一辆可以有很多司机,但司机只能有一辆.

我该如何添加新驱动程序?我该如何在司机和汽车之间添加关系?

如果我添加一个资源Wunderbaums,它不是汽车的子资源,但Car可以包含Wunderbaums.我该如何在CarWunderbaum之间添加关系?

在两个实体之间添加关系的一种方法是POST /entityA/{id}/entityB/{id}并发送正文中关系的属性.这可以用于我的汽车Wunderbaums示例,因为Wunderbaums不是汽车的子资源,但它在我的汽车驾驶员示例中不起作用,因为它会干扰驾驶员的 CRUD功能.路径cars/{id}/drivers{id}将创建之间的关系同样驱动程序作为创建驱动程序.

我还发现了关于这个问题的未解决的问题.

编辑1
@JB Nizet建议我把关系属性放在Driver里面,因为它有一对多的关系.这将是一个可能的解决方案,但如果一个 …

rest jax-rs restful-url restful-architecture

6
推荐指数
1
解决办法
1102
查看次数

在 REST API 的 POST 请求中同时使用查询和正文参数是否有意义?

我有一个资源,本质上需要另一个资源作为创建的输入数据。例如:

POST /v1/NewResource
body: {InputResource}
Run Code Online (Sandbox Code Playgroud)

然而,有趣的是,创建 NewResource 的成本很高,而且资源本身是暂时的(不是持久的)。有些消费者可能只需要部分资源。因此,我确实有两个输入参数:创建所需的数据,然后处理来自消费者的指令以控制实际完成的工作量。

我看到两条路(至少):

POST /v1/NewResource?detailLevel=base|full
body: {InputResource}
Run Code Online (Sandbox Code Playgroud)

POST /v1/NewResource
body: {Request.detailLevel and Request.InputResource}
Run Code Online (Sandbox Code Playgroud)

第一个甚至是一个选择吗?有人有任何偏好/经验吗?让有效负载只是所需的数据并与处理指令分开,有一定的优雅性。我意识到这里没有正确或错误的答案,只是对社区的想法感到好奇。

rest api-design restful-url restful-architecture

6
推荐指数
1
解决办法
2709
查看次数

为我的REST API创建一个单独的应用程序或将其放在我的工作应用程序中?

我正在geodjango上构建简单的gis系统.

该应用程序显示一组地图,我也试图为这些地图提供RESTFUL API.

我正在决定是为API创建单独的应用程序还是在现有应用程序内部工作.
这两个应用程序在逻辑上是分开的,但它们共享相同的模型.

那么什么被认为更好?

django geodjango restful-architecture django-rest-framework

6
推荐指数
1
解决办法
1086
查看次数

Securing API's with Multi Factor Authentication

I want to secure my API with Multi-factor-Authentication on top of Auth Token/JWT. I have been searching but couldn't find any package that can work with drf. I am thinking to write my own django app. Any comments on what should be the architecture ?

我想到的一个解决方案是引入令牌基础架构。如果用户正在访问受 mfa 保护的 api,那么请求实例应该与令牌一起保存,并且应该向他的手机发送一条短信(如果手机作为 mfa ) 并且响应应该是那个标记。然后应该向mfa端点发出另一个请求token and mfa-code。一旦验证,我们将获取他之前的请求对象并完成请求。

django restful-architecture two-factor-authentication django-rest-framework multi-factor-authentication

6
推荐指数
0
解决办法
532
查看次数