当我从API收到Laravel的通知数据时,最佳做法是什么?

时间:2017-09-18 15:36:18

标签: php laravel rest api

在ERP中进行更改时,我会收到来自API的通知。

我收到的URL地址(CallbackURL)的消息是JSON类型:

{
    "NotificationType": "Product Change",
    "ChangeType": "Update",
    "Trigger": "M_Product",
    "Value": "00087GH" 
}

我有多种通知类型,也有更改类型。之后,我做了一些验证,连接模型并将数据保存在数据库中。

我应该在控制器中制作所有逻辑吗?这是操纵此类数据的最佳做法?

1 个答案:

答案 0 :(得分:1)

您可以创建一个为您执行此操作的事件:

 class ProductChangeEvent {
      use SerializesModels;//Maybe needed
      public $parameters;
      public function __construct($parameters) {
           $this->parameters = $parameters;
      }
 }

此类可以选择实现允许延迟的ShouldQueue接口。

您可以通过听众处理该事件:

class ProductChangeListener {

     public function handle(ProductChangeEvent $event) {
            switch ($event->parameters["NotificationType"]) {
                  //more cases?
                  case "Product Change": 
                  default:
                        $this->handleProductChange($event);
            }
     }

     protected function handleProductChange(ProductChangeEvent $event) {
           if ($event->parameters["ChangeType"] == "Update") {
               //Handle update product change
           }
     }
}

显然这只是一个例子。您可以根据实际用例分配功能和案例。

然后,您可以在路由处理程序中引发此事件:

Route::get("/eventListenerCallback", function (Request $req) {
      $parameters = json_decode($request->getContent(), true); //Is this right?
      event(new ProductChangeEvent($parameters));
});