通知 API 系统正确流程

我构建了一个小型通知 api 系统,该系统在数据库中包含iduser_idsubjecttextstatus,列。created_at

我目前的流程是,当用户请求她的通知时,我会收到最近的 100 条未读消息并发送给用户,然后等待前端向我发送ids用户已阅读的列表,以便我可以将他们的状态更改为read

但有时这不会发生,这意味着当用户请求另一组消息时,他们将取回已读过的消息。

因此,我正在考虑在为用户检索消息后将消息标记为已读,而不是等待来自前端的更新。

但我不确定这是否是处理此问题的最佳方法!api通知系统是否有更好的流程请告诉我。谢谢。


至尊宝的传说
浏览 86回答 2
2回答

慕工程0101907

我会这样想:未读项目列表描述的是什么?国家了解的内容未被阅读。提取未读项目列表真的意味着所有这些项目都已阅读吗?我想不是。您可能允许批量标记读取,但实际上读取列表只是一种状态表示。阅读列表,并通过向thing/mark-read.如果您认为(中央)存储不能准确地表示状态,因为您认为它们应该被读取,那么请调试您的界面。不过,我不会在拉出列表时标记为已读。那将是一个有缺陷的方法。如果您确实将所有 100 个直接插入到您认为它们已读取的显示中,请在您的 api 中创建一个端点并将thing/mark-items-read这 100 个项目 ID 传递给它。

拉丁的传说

我们在这里看不到您的代码,但我建议如下:将显示给使用的消息的 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');   }}
打开App,查看更多内容
随时随地看视频慕课网APP