通知 Api 系统正确处理
Notification Api System Correct Process
我构建了一个小型通知 api 系统,其中包含 id
、user_id
、subject
、text
、status
、created_at
数据库中的列。
我目前的流程是,当用户请求她的通知时,我会获取最近的 100 条 未读 消息并发送给用户,然后等待前端发送给我用户已阅读的 ids
列表,以便我可以将它们的状态更改为 read.
但有时这不会发生,这意味着当用户请求另一组消息时,他们将取回他们已读过的消息。
所以我考虑在为用户检索消息后将其标记为已读,而不是等待来自前端的更新。
但我不确定这是否是处理此问题的最佳方式! api 通知系统有没有更好的流程请指教。谢谢。
我们在这里看不到您的代码,但我建议如下:
将显示给用户的消息的 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');
}
}
我会这样想:那个未读条目列表描述的是什么?国家了解的内容未被阅读。提取未读项目列表真的意味着所有这些项目都已阅读吗?我想不是。您可能允许批量标记读取,但实际上读取列表只是一种状态表示。阅读列表,并通过向 thing/mark-read
.
发送每项请求,在触摸到可见界面组件时权威地标记为已读
如果您认为(中央)存储不能准确表示状态,因为您认为它们应该被读取,请调试您的界面。不过,我不会在拉出列表时标记为已读。那将是一个有缺陷的方法。
如果您直接将所有 100 个项目插入到您认为已读取的显示中,请在 api 中为 thing/mark-items-read
创建一个端点并将这 100 个项目 ID 传递给它。
我构建了一个小型通知 api 系统,其中包含 id
、user_id
、subject
、text
、status
、created_at
数据库中的列。
我目前的流程是,当用户请求她的通知时,我会获取最近的 100 条 未读 消息并发送给用户,然后等待前端发送给我用户已阅读的 ids
列表,以便我可以将它们的状态更改为 read.
但有时这不会发生,这意味着当用户请求另一组消息时,他们将取回他们已读过的消息。
所以我考虑在为用户检索消息后将其标记为已读,而不是等待来自前端的更新。
但我不确定这是否是处理此问题的最佳方式! api 通知系统有没有更好的流程请指教。谢谢。
我们在这里看不到您的代码,但我建议如下:
将显示给用户的消息的 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'); } }
我会这样想:那个未读条目列表描述的是什么?国家了解的内容未被阅读。提取未读项目列表真的意味着所有这些项目都已阅读吗?我想不是。您可能允许批量标记读取,但实际上读取列表只是一种状态表示。阅读列表,并通过向 thing/mark-read
.
如果您认为(中央)存储不能准确表示状态,因为您认为它们应该被读取,请调试您的界面。不过,我不会在拉出列表时标记为已读。那将是一个有缺陷的方法。
如果您直接将所有 100 个项目插入到您认为已读取的显示中,请在 api 中为 thing/mark-items-read
创建一个端点并将这 100 个项目 ID 传递给它。