yugo / blogger
Blogger Rest API
v1.1.0
2019-02-11 21:37 UTC
Requires
- guzzlehttp/guzzle: ^6.3
Requires (Dev)
- phpunit/phpunit: ^7.3
This package is auto-updated.
Last update: 2024-09-29 05:21:33 UTC
README
非官方的Blogger (REST API) 包,用于Laravel。
特性
- 获取博客信息。
- 检索文章。
- 通过ID或路径检索文章。
- 搜索文章。
- 检索页面。
- 检索单个页面。
安装
通过运行以下命令将Blogger包添加到您的Laravel应用程序中:
composer require yugo/blogger
配置
如果您使用的是Laravel 5.5及以上版本,则提供者将自动通过Laravel的自动包发现注册。如果您收到表示提供者未找到的错误,您可以通过config/app.php
文件注册新的提供者。
/*
* Package Service Providers...
*/
Yugo\Blogger\BloggerServiceProvider::class,
您可以从同一配置文件设置Blogger包的别名。
// facade alias
'Blogger' => Yugo\Blogger\Facades\Blogger::class,
在使用Blogger
外观之前,您必须提供博客的API密钥和完整URL。API密钥可以通过此链接生成。
将名为key
和url
的两个配置添加到config/services.php
文件中。
'blogger' => [
'key' => env('BLOGGER_KEY'),
'url' => env('BLOGGER_URL', 'https://yourblog.blogspot.com'),
],
出于安全原因,您可以使用以下示例定义从.env
文件中的blogger.key
和blogger.url
配置。
BLOGGER_KEY="secret-api-key"
BLOGGER_URL="https://yourblog.blogspot.com"
用法
在检索文章、页面和评论之前,您必须首先知道您的博客ID。要检索博客ID数据,您可以使用Blogger
外观的blog
方法。例如
$blog = Blogger::blog();
可用方法
$blog = Blogger::blog(); // retrieving posts $posts = Blogger::posts($blog['id']); $posts = Blogger::search($keyword, $blogId); $post = Blogger::postById($postId, $blogId); $post = Blogger::postByPath($path, $blogId); // retrieving pages $pages = Blogger::pages($blog['id']); $page = Blogger::page($pageId, $blogId);
如果您想在文章中包含图片,可以通过链式方法withImages(bool $withImages = true)
实现,例如
$posts = Blogger::withImages()->posts();
最佳实践
在检索文章或页面时,您必须在每个方法中定义博客ID。如果您只有一个博客且博客ID是静态的,您可以根据以下示例代码进行最佳实践。
<?php namespace App\Http\Controllers; use Illuminate\Http\JsonResponse; use Illuminate\Support\Facades\Cache; use Illuminate\Http\Request; use Yugo\Blogger\Facades\Blogger; class BloggerController extends Controller { /** * @var Blogger */ private $blogger; public function __construct() { $blog = Cache::remember('blogger.blog', now()->addDays(7), function (){ return Blogger::blog(); }); abort_if(empty($blog), 404, __('Blog not found.')); $this->blogger = Blogger::setBlog($blog['id']); } /** * @return JsonResponse */ public function blog(): JsonResponse { return response()->json($this->blogger->blog()); } /** * @return JsonResponse */ public function posts(): JsonResponse { return response()->json($this->blogger->posts()); } /** * @param string $id * @return JsonResponse */ public function post(string $id): JsonResponse { return response()->json($this->blogger->postById($id)); } /** * @param string $id * @return JsonResponse */ public function comments(string $id): JsonResponse { return response()->json($this->blogger->comments($id)); } /** * @param string $post * @param string $comment * @return JsonResponse */ public function comment(string $post, string $comment): JsonResponse { return response()->json($this->blogger->comment($comment, $post)); } /** * @param Request $request * @return JsonResponse */ public function search(Request $request): JsonResponse { $this->validate($request, [ 'keyword' => ['required', 'string'], ]); return response()->json($this->blogger->search($request->keyword)); } /** * @return JsonResponse */ public function pages(): JsonResponse { return response()->json($this->blogger->pages()); } /** * @param string $id * @return JsonResponse */ public function page(string $id): JsonResponse { return response()->json($this->blogger->page($id)); } }
接下来,如果您想通过浏览器直接访问,可以定义如下所示的路由。
Route::get('blogger/blog', 'BloggerController@blog'); Route::get('blogger/posts', 'BloggerController@posts'); Route::get('blogger/post/{id}', 'BloggerController@post'); Route::get('blogger/post/{id}/comments', 'BloggerController@comments'); Route::get('blogger/post/{post}/comment/{comment}', 'BloggerController@comments'); Route::get('blogger/search', 'BloggerController@search'); Route::get('blogger/pages', 'BloggerController@pages'); Route::get('blogger/page/{id}', 'BloggerController@page');
演示 & 示例代码
完整的运行应用程序可以在blogger.aplikasi.live找到。您可以从此存储库查看代码。
许可证
MIT许可证。