休息API实时棘手的问题-需要回答。

问题描述 投票:0回答:1

我最近接受了一家跨国公司技术小组的面试,他们问了我不同的问题,与RestAPI有关,我能够回答所有的问题,但下面的2个问题,虽然我回答了,但不确定是否是正确的答案。谁能用实时的例子回答我的疑问

1) 当有人从Postman发送请求时,我怎样才能保证我的Rest API的安全,用户在头中提供了所有正确的信息,如session id,Token等,我的回答是:"用户在请求头中发送的token应该与成功认证的用户信息相关联,然后只有当请求来自Postman或应用程序调用这些API时,用户才会被授予访问权。用户在请求头中发送的Token应该与成功认证的用户信息相关联,然后只有当请求来自Postman或应用程序调用这些API时,用户才会被授予访问权限。

2) How can i handle concurrency in Rest API Means if multiple users are trying to access the API at the same given time (For.g multiple post request are coming to update data in a table) how will you make sure one request is served at one time and accordingly the values are updated as requested by different user request.2) My answer was: 在Entitiy框架中,我们有一个叫做DbUpdateConcurrencyException的类,这个类负责处理并发问题,并且一次只服务一个请求。我不知道我的上述两个答案,我也没有在Googling上找到任何具体的答案,我的答案是:在Entitiy框架中,我们有一个叫做DbUpdateConcurrencyException的类,这个类需要处理并发,并且一次服务一个请求。

感谢您的专业帮助。

谢谢您的帮助。

security authentication postman restapi
1个回答
0
投票

1) 这是不可能的,从Postman或任何其他客户端或代理(Burp,ZAP等)的请求是无法区分的浏览器请求,如果用户有适当的凭证(例如,可以观察和复制正常的请求)。不可能对客户端应用进行认证,只能对客户端用户进行认证。

2)如果一个web应用一次只能为一个客户端服务,那就非常糟糕了。想想像Facebook这样的大流量:) 在许多(也许是大多数?)堆栈中,每个请求都有自己的线程(或类似的线程)来运行,当请求-响应结束时,这个线程就结束了。这些线程在运行时不应该直接相互通信。数据一致性是对持久化技术的要求,即如果你使用的是数据库为例,它必须保证数据库查询一个接一个地运行。需要注意的是,如果一个应用运行多个查询,需要在数据库层面使用数据库事务或锁来保持一致性。但这完全不是关于客户端请求的问题,而是关于如何使用你的持久化技术来实现数据的一致性。使用传统的RDBMS大多很容易,使用其他的持久化技术(比如使用纯文本文件进行存储)就难多了,因为文件操作通常不支持类似事务的设施(但它们支持锁,你必须手动管理)。

© www.soinside.com 2019 - 2024. All rights reserved.