我正在使用 Zotero 的 API 从我的 (zotero) 库获取项目并将它们保存在我的数据库中。
当我点击提交按钮时,数据被保存,但我想同时使用http请求的删除方法从在线zotero的库中删除它。
以下是 API 文档中关于删除的说明:
URI:
/keys/<key>
给定 API 密钥的用户 ID 和权限。 使用 DELETE HTTP 方法删除密钥。这通常只能由最初使用 OAuth 创建密钥的客户端来完成。
数据的 JSON 结构如下所示:
这是我的控制器:
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');
来实现我需要做的事情。
例如,要删除第一个项目,我在重定向()-> back()之前在存储函数中尝试这样做
//delete from api lib
$key=$collections[0]->key;
Http::withToken('MyApiKey')->delete('https://api.zotero.org/users/MyUserID/items/keys/'.$key);
但是不起作用。
您使用的网址不正确。对于单个项目删除,您应该发送删除请求至
'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
标头。