Laravel 补丁外部 API

问题描述

我正在从外部 API 源获取数据。

我用它来检索我的订单

$data = Http::get(
    $this->URL .'orders?language=nl_NL&limit=100&format=json&status_changed_start_date='
       . $last_poll
       . '&ordering=asc&partner_token='.$this->PARTNERKEY.'&token='.$this->MERCHANTTOKEN.''
)->json();

按照合作伙伴网站上的指南,我应该使用这种格式来更新特定记录。

curl -X PATCH $this->URL ."orders/2?language=nl_NL&format=json&override_minimum=false&override_stock=false&mutate_stock=true&partner_token='.$this->PARTNERKEY.'&token='.$this->MERCHANTTOKEN.'" \
     -H  "accept: application/json" \
     -H  "Content-Type: application/json" \
     -d "{\"status\":2,\"archived\":true,\"comments\":{\"internal\":\"Owner's commentary\"}}"

我将如何在 Laravel 控制器中实现这一点?

解决方法

使用 Laravel 提供的 HTTP Client

use Illuminate\Support\Facades\Http;
use Illuminate\Http\Request;

class MyController
{
    public function update (Request $request)
    {
        // Maybe use from $request?
        $id = 2;

        Http::patch($this->url . "/orders/" . $id,[
            'version' => 1,'order_number' => 2,'language' => 'nl_NL','format' => 'json','override_minimum' => false,// .. put here the other parameters
        ]);
    }   
}

,

嗨,这是我的最终代码。

这似乎是我需要的

$client = new Client([
                // Base URI is used with relative requests
                'base_uri' => $this->URL,]);
              
            $response = $client->request('PATCH','orders/' . $item['number'] .'?language=nl_NL&format=json&override_minimum=false&override_stock=false&mutate_stock=true&partner_token='.$this->PARTNERKEY.'&token='.$this->MERCHANTTOKEN,[
                'json' => [
                    'status' => 2,'archived' => true,'comments' => ['internal' => $comment]],]);