1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/liushoukun-dawn-api-demo

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Dawn-Api

Последняя стабильная версия Общее количество загрузок Последняя нестабильная версия Лицензия Ежемесячное количество загрузок [Toc]

Описание

ThinkPHP5 RESTful API, который включает в себя обработку запросов API, аутентификацию, автоматическое создание документации и другие функции.

  • Обработка запросов RESTful: каждый интерфейс соответствует контроллеру, а метод соответствует методу ответа.
  • Аутентификация: Basic, Oauth Client Credentials Grant.
  • Создание документации: лаконичная, элегантная, не требующая дополнительных инструментов для создания документации.

Установка

  1. Если вы хотите использовать его в своём проекте TP5, вы можете напрямую использовать:
composer require liushoukun/dawn-api
  1. Если это новый проект, сначала создайте проект TP5, затем используйте:
composer create-project topthink/think api  --prefer-dist
composer require liushoukun/dawn-api
  1. Для использования генерации документации необходимо установить hadmin в public/static/:
cd /public/static/
git clone  https://git.oschina.net/liushoukun/hadmin.git

Использование

  1. Создайте модуль demo.
  2. Создайте базовый класс бизнес-логики Base, наследуя от ApiController.
<?php
    namespace app\demo\controller;
 
 
    use DawnApi\facade\ApiController;
    class Base extends ApiController
    {
 
     //是否开启授权认证
     public    $apiAuth = true;
 
    }
 ?>
 
  1. Создайте интерфейс пользователя User, наследующий от Base.
 class User extends Base
  1. Добавьте маршруты ресурсов: |Обозначение|Тип запроса|Сгенерированное правило маршрута|Соответствующий метод операции (по умолчанию)| |---|---|---|---| |index|GET|v1/user|index| |save|POST|v1/user|save| |read|GET|v1/user/:id|read| |update|PUT|v1/user/:id|update| |delete|DELETE|v1/user/:id|delete| ||||| |create|GET|v1/user/create|create| |edit|GET|v1/user/:id/edit|edit|

Дополнительные методы

Если вам нужно добавить некоторые дополнительные операции, такие как отправка кода подтверждения, добавьте метод в список $extraActionList. После регистрации маршрута:

Route::group('v1',function (){
    Route::any('user/sendCode','demo/User/sendCode');//необходимо зарегистрировать перед регистрацией ресурса
    Route::resource('user','demo/User');
});

Пропустить аутентификацию

Если есть необходимость пропустить аутентификацию для некоторых операций, добавьте метод в список $skipAuthActionList, чтобы пропустить аутентификацию.

protected $skipAuthActionList = ['sendCode']; //метод пропуска аутентификации

Документация по ресурсам->

Обработка ответов

   // Успех
  return $this->sendSuccess($data = [], $message = 'success', $code = 200, $headers = [], $options = [])
   // Ошибка
  return $this->sendError($error = 400, $message = 'error', $code = 400, $data = [], $headers = [], $options = [])
    // Перенаправление
  return $this-> sendRedirect($url, $params = [], $code = 302, $with = [])
  1. Запрос интерфейса

Включение аутентификации

  1. Добавьте конфигурацию аутентификации:
 'api_auth' => true,  //включить аутентификацию
  1. Реализуйте класс аутентификации AuthContract:
  • authenticate: возвращает true при успешной аутентификации, иначе не проходит.
  • getUser: Api-контроллер может вызывать для получения информации о пользователе.
self::$app['auth']->getUser();
 /**
     * Аутентифицировать через клиентскую информацию и маршрут и т. д.
     * Если успешно, верните true
     * @param Request $request
     * @return bool
     */
    public function authenticate(Request $request)
    {
        // TODO: Implement authenticate() method.
        return true;
    }

    /**
     * Получить информацию о пользователе Интерфейс может напрямую получить информацию о пользователе
     * @return mixed
     */
    public function getUser()
    {
       return ['app_id'=>'111','name'=>'dawn-api'];
    }
  1. Включите аутентификацию в классе интерфейса:
//включать ли аутентификацию
public    $apiAuth = true;
Конфигурация (api_auth) Класс ($apiAuth) Эффект
true true Включить аутентификацию
true false Отключить аутентификацию
false false Отключите аутентификацию
false true Отключите аутентификацию
  1. Настройте класс проверки подлинности:

Простое внедрение Basic & Oauth Client Credentials Grant аутентификация

  • Basic
   'auth_class' => \app\demo\auth\BasicAuth::class, //класс аутентификации

/v1/user?client_id=test&secret=test OR v1/user заголовки Basic

  • Oauth Client Credentials Grant
  1. Настроить класс проверки подлинности:
   'auth_class' => \app\demo\auth\OauthAuth::class, //класс аутентификации
  1. Получите access_token:
  • Напишите доступный метод для получения access_token.
namespace app\demo\controller;

use app\demo\auth\OauthAuth;
use think\Request;

class Auth
{
    public function accessToken()
    {
        $request = Request::instance();

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

RESTful API, написанное на thinkphp5, включает обработку запросов API, аутентификацию и автоматическое создание документации. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/liushoukun-dawn-api-demo.git
git@api.gitlife.ru:oschina-mirror/liushoukun-dawn-api-demo.git
oschina-mirror
liushoukun-dawn-api-demo
liushoukun-dawn-api-demo
master