为了账号安全,请及时绑定邮箱和手机立即绑定

通知 API 系统正确流程

通知 API 系统正确流程

PHP
至尊宝的传说 2023-04-21 16:45:54
我构建了一个小型通知 api 系统,该系统在数据库中包含id, user_id, subject, text, status,列。created_at我目前的流程是,当用户请求她的通知时,我会收到最近的 100 条未读消息并发送给用户,然后等待前端向我发送ids用户已阅读的列表,以便我可以将他们的状态更改为read。但有时这不会发生,这意味着当用户请求另一组消息时,他们将取回已读过的消息。因此,我正在考虑在为用户检索消息后将消息标记为已读,而不是等待来自前端的更新。但我不确定这是否是处理此问题的最佳方法!api通知系统是否有更好的流程请告诉我。谢谢。
查看完整描述

2 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

我会这样想:未读项目列表描述的是什么?国家了解的内容未被阅读。提取未读项目列表真的意味着所有这些项目都已阅读吗?我想不是。您可能允许批量标记读取,但实际上读取列表只是一种状态表示。阅读列表,并通过向thing/mark-read.

如果您认为(中央)存储不能准确地表示状态,因为您认为它们应该被读取,那么请调试您的界面。不过,我不会在拉出列表时标记为已读。那将是一个有缺陷的方法。

如果您确实将所有 100 个直接插入到您认为它们已读取的显示中,请在您的 api 中创建一个端点并将thing/mark-items-read这 100 个项目 ID 传递给它。


查看完整回答
反对 回复 2023-04-21
?
拉丁的传说

TA贡献1789条经验 获得超8个赞

我们在这里看不到您的代码,但我建议如下:


将显示给使用的消息的 ID 存储在前端的数组中,因此当用户查看消息时,您将 id 添加到该数组。我不确定您的前端正在使用什么,因此无法真正提出代码建议。


在路由文件的后端创建一个接收此数组的端点


Route::post('somepath/read-messages', 'MessageController@readMessages');

然后,在您的消息控制器中:


public function readMessages(Request $request) {


   if ($request->has('read_messages') {

       $messages = Message::whereIn('id', $request->read_messages)->get();

       $messages->update(array('staus' => 'read');

   }


}


查看完整回答
反对 回复 2023-04-21
  • 2 回答
  • 0 关注
  • 63 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信