Woocommerce Api: категория магазина с изображением выдает ошибку Bad Request 400

#php #wordpress #laravel #woocommerce

#php #wordpress #laravel #woocommerce

Вопрос:

Я использую Laravel 8 с API woocommerce. Я создаю категорию продуктов, используя документацию Woocommerce api.

 https://woocommerce.github.io/woocommerce-rest-api-docs/#create-a-product-category
 

и я отправляю запрос на загрузку изображений следующим образом,

 $categoryPhotoUrl = null;
    if (request()->hasFile('images')) {
        $file = $request->file('images') ;
        $fileName = $file->getClientOriginalName() ;
        $destinationPath = public_path().'/assets/images/categories' ;
        $file->move($destinationPath,$fileName);
        $categoryPhotoUrl = asset('/assets/images/categories').'/'.$fileName;
    }

    $request->request->add(['image' => ['src' => $categoryPhotoUrl]]);
    CategoryService::created($request->except('_token', 'images'));
 

и в классе обслуживания я использую логику,

 public static function created($data)
{
    return (new WoocommerceClient())->postRecord('products/categories',$data);
}
 

и WoocommerceClient содержат эту логику,

 $response =  Http::withToken($this->authToken)->withHeaders([
        "Content-Type" => "image/jpg"
    ])->post($this->baseUrl.$endpoint, $data);
    dd($response);
 

Если я отправляю данные без изображения, они работают нормально, но если я сохраняю изображение, а затем отправляю URL, я получил ошибку Bad Request 400.

     IlluminateHttpClientResponse {#279 ▼
    #response: GuzzleHttpPsr7Response {#314 ▼
    -reasonPhrase: "Bad Request"
    -statusCode: 400
    -headers: array:20 [▶]
    -headerNames: array:20 [▶]
    -protocol: "1.1"
    -stream: GuzzleHttpPsr7Stream {#313 ▶}
   }
 

Как я могу это решить. Спасибо.

Ответ №1:

С большим количеством поиска я смогу это исправить. Я использую выборку для загрузки изображения в базу данных WordPress. Затем я получаю объект, содержащий исходный URL, затем отправляю его с помощью woocommerce