reactjs - 我是在客户端还是服务器上对 API 数据进行分页?
问题描述
我目前正在开发一个项目,我使用 API 的客户端凭据流来检索数据。我可以通过访问令牌获得响应并获取数据,但是有一个限制,我必须分页才能获得我正在寻找的所有数据。现在我被困在一个设计问题上。
我应该通过服务器获取访问令牌并找到将其传递给客户端的方法吗?然后我可以从客户端发出请求以获取数据和分页?我认为在 React(客户端)上这样做比在 Express(服务器)上这样做要容易得多,但我担心每次页面加载时将访问令牌传递给客户端可能效率低下,因为我必须进行身份验证每次。我应该将访问令牌存储到本地存储吗?
另一种方式是通过 Express 进行分页,但将其编程出来似乎要困难得多,我对哪种方式是正确的方式感到困惑。有人可以给我一些见解吗?谢谢你。
解决方案
无论您为分页执行 api 调用还是任何 api 调用,您都应该将访问令牌传递给服务器以进行身份验证,这就是访问令牌的设计方式。
- 使用用户名和密码登录
- 服务器检查用户名和密码是否有效,然后生成访问令牌,其中包含一些信息,例如用户名、用户 ID、角色、到期......然后发送到客户端(React、React-Native...)
- 如果服务器将访问令牌存储在 Web 客户端的 cookie 中,您无需执行任何操作,任何后续请求都会自动将令牌包含在 cookie 中,如果客户端是移动设备,则需要将令牌存储在移动设备的某个位置(RN 的 asyncStorage),然后您需要按照服务器告诉您的方式将访问令牌连同请求数据一起发送到服务器的每个后续请求。
- 服务器可以根据令牌对您进行身份验证,并根据有效性发回数据或错误。
如果您进行分页,则需要另一个称为 continue 令牌的令牌,它包括数据限制,您从之前的 api 调用中获得的最后一个 itemId ...
- 如上所述,服务器将根据访问令牌对客户端进行身份验证
- 如果您已通过身份验证,服务器将解码令牌并获取信息,然后查询数据库并将数据发送回客户端
推荐阅读
- microsoft-teams - 自定义选项卡的深层链接 - thread.skype vs thread.tacv2
- c# - 如何订阅活动
- javascript - Javascript:什么是 eslintcache 文件以及为什么总是在 create react app 中生成
- css - 关闭 var css 并返回更高的样式
- c# - 使用 System.Threading.Timer 在 Discord.net 上的异步任务之间交替
- javascript - 如何让用户知道他必须刷新页面才能获得最新的应用程序版本/最新内容?
- javascript - TypeError:'bytes' 对象不可调用,同时执行 element.screenshot_as_png
- mongodb - MongoDB 嵌入式图表过滤器
- python - Librosa 0.8.0 | 人声分离输出有效,但速度高达 200%
- ios - SwiftUI:如何调整 UIViewRepresentable 输出的大小?