Giter Club home page Giter Club logo

lumen-rest-api-template's Introduction

Lumen API Template/Boilerplate with JWT Auth

License PHP8 LUMEN8.X

This is a boilerplate for lumen 8.x if you are using lumen to write REST api it will help you.

This project use:

Write some easy APIs.

Checkout my other repo that is focused on reply to this template but using graphql lumen-graphql-api-template

Feel free to make a pull request and make this repo better :D

TODO

  • docker
  • phpunit validation

Main Features

Document your API

apidoc -i App/Http/Controller/Api/v1 -o public/apidoc

Use Artisan Generators

By default lumen does't support the useful laravel/artisan generators and using this extension we can use this comands executing a "dev inclusive" composer install.

Test:

php artisan make:model MyModel

USEFUL LINKS

Installation

1 Install the project

Using GIT

git clone https://github.com/marco-gallegos/lumen-rest-api-template.git new_api
cd new_api
composer install
cp .env.example .env
php artisan jwt:secret

Using Composer

composer create-project --stability dev cbxtechcorp/lumen-rest-api-template new_api

2 configre your project

Now give to your project access tou your database and create the users table whit a test user.

vim .env
  DB_*
    configure your database access
  
  APP_KEY
    key:generate is abandoned in lumen, so do it yourself
    md5(uniqid()),str_random(32) etc.,maybe use jwt:secret and copy it

php artisan migrate --seed

Documentation

Serve Your API

php artisan serve
# or
php -S localhost:8000 -t public

Deploy

In a production server we can omit development packages autoload using this command

composer install --no-dev

Routes

We have some routes to start.

  • api/v1/users
  • api/v1/permission

FAQ

About JWT

There is no session and auth guard in lumen 5.2, so attention config/auth.php. Also user model must implement Tymon\JWTAuth\Contracts\JWTSubject

How to use mail
  • composer require illuminate/mail and guzzlehttp/guzzle
  • register email service in bootstrap/app.php or some provider
  • add mail.php services.php in config, just copy them from laravel
  • add MAIL_DRIVER in env
How to use transformer

transformer is a layer help you format you resource and their relationship.

maybe you can knowstand with this links:

transformer data serizlizer

dingo/api use Fractal to transformer resouses,fractal provider 3 serializer,Array,DataArray,JsonApi.more details at here http://fractal.thephpleague.com/serializers/。DataArray is default.You can set your own serizlizer like this:

see bootstrap/app.php $app['Dingo\Api\Transformer\Factory']->setAdapter(function ($app) { $fractal = new League\Fractal\Manager; // $serializer = new League\Fractal\Serializer\JsonApiSerializer(); $serializer = new League\Fractal\Serializer\ArraySerializer(); // $serializer = new App\Serializers\NoDataArraySerializer(); $fractal->setSerializer($serializer);, return new Dingo\Api\Transformer\Adapter\Fractal($fractal); });

I think default DataArray is good enough.

Check the Original Project

Lumen API Demo

lumen-rest-api-template's People

Contributors

erisitohang avatar gallem avatar liyu001989 avatar marco-gallegos avatar oukan avatar stenote avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.