php 如何在Laravel中使用HTTP请求的delete方法通过外部API库删除项目

sshcrbum  于 5个月前  发布在  PHP
关注(0)|答案(1)|浏览(75)

我正在使用Zocom的API从我的(zocom)库中获取项目,并将其保存到数据库中。
当我点击提交按钮,数据被保存,但我想在同一时刻删除它从在线zoopet的库与http请求的删除方法。
以下是API文档中关于删除的说明:
URI:/keys/<key>
给定API密钥的用户ID和权限。使用HTTP方法删除密钥。这通常只能由最初使用OAuth创建密钥的客户端完成。
数据的JSON结构看起来像这样:
x1c 0d1x的数据
这是我的控制器:

public function index(Request $req){

    $response = Http::withToken('MyApiKey')->get('https://api.zotero.org/users/myUserID/items?limit=100
        ');
        $response->json();
        $datas= json_decode($response);
    return view('partials.ajout_automatique',compact('datas'));

}

字符串
我的看法:

@foreach ($datas as $data)

{{-- {{dd(property_exists($data->data,'title'))}} --}}

@if (property_exists($data->data,'title'))
    

<form action="/reference/autoCreate" method="post">
    @csrf
    <div>
       

        {{-- Title --}}

        @if (property_exists($data->data,'title'))
        <p>Titre: {{$data->data->title}}</p>
        <input type="hidden" name="title" value="{{$data->data->title}}" >
        @else
        <p>Titre not found</p>
        <input type="hidden" name="title" value="title unfound" >
        @endif

{{-- etc... --}}

<button type="submit" name='Ajouter' value="Ajouter"
        class="btn btn-success pl-5 pr-5">Ajouter</button>
</form>

@endif
@endforeach


我的函数商店:

public function store(Request $request)
{
$response = Http::withToken('ItxwU6wG7bnNDY3E9bVfq3Da')->get('https://api.zotero.org/users/8548265/items?limit=100
    ');
    $response->json();
    $collections= json_decode($response);

        $reference_auto = new Reference;
        $reference_auto->user_id = Auth::user()->id;
        $reference_auto->title = $request->title;
        $reference_auto->authors = $request->authors;
        $reference_auto->year = $request->year;
        $reference_auto->edition = $request->edition;
        $reference_auto->url = $request->url;
        
            $message = "Nouvelle référence ajoutée avec succès."; 
            
          
            $reference_auto->save();
            Alert::success('Ok !', $message);

        
    return redirect()->back();
}


我不知道如何以及在哪里使用Http::delete('http://example.com');来实现我需要做的事情。例如,删除第一个项目,我在redirect()->back()之前的store函数中尝试此操作。

//delete from api lib
    $key=$collections[0]->key;
    Http::withToken('MyApiKey')->delete('https://api.zotero.org/users/MyUserID/items/keys/'.$key);


但它不起作用

eqqqjvef

eqqqjvef1#

您使用的URL不正确。如果要删除单个项目,请发送删除请求到

'https://api.zotero.org/users/MyUserID/items/' . $key

字符串
您还需要在请求中包含If-Unmodified-Since-Version标头。请参阅https://www.zotero.org/support/dev/web_api/v3/write_requests
此外,检查由API返回的HTTP代码以检测问题总是值得的,例如,400 Bad Request意味着您发送的请求不正确,另一方面,428 Precondition Required意味着请求被理解,但(在此特定情况下)未提供所需的If-Unmodified-Since-Version报头。

相关问题