lumen Rest API 起步

修改项目文件

.env

DB_DATABASE=<数据库名>
DB_USERNAME=<数据库用户名>
DB_PASSWORD=<数据库密码>

bootstrap/app.php

$app->withFacades();
$app->withEloquent();

数据库迁移

创建数据表

php artisan make:migration create_table_users --create=users

定义数据表

database/migrations/迁移文件

Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
});

运行迁移

php artisan migrate

创建模型

接下来我们在app目录下创建模型文件User.php

namespace App;

use Illuminate\Auth\Authenticatable;
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Database\Eloquent\Model;
use Laravel\Lumen\Auth\Authorizable; class User extends Model implements AuthenticatableContract, AuthorizableContract
{
use Authenticatable, Authorizable; /**
* The attributes that are mass assignable.
*
* @var array
*/
protected $table = 'users'; protected $fillable = [
'id', 'name',
]; /**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = []; public $timestamps = false;
}

创建控制器

然后创建控制器文件app/Http/Controllers/UserController.php

namespace App\Http\Controllers;

use App\User;
use DB;
use Illuminate\Http\Request; class UserController extends Controller
{
public function createUser(Request $request)
{
$user = User::create($request->all());
return response()->json($user);
} public function updateUser(Request $request,$id)
{
$user = User::find($id);
$user->name = $request->input('name');
$user->save(); return response()->json($user);
} public function deleteUser($id)
{
$user = User::find($id);
$user->delete(); return response()->json('删除成功');
} public function index($id = null)
{
if (!empty($id)) {
$users = User::find($id);
}else{
$users = User::all();
}
return response()->json($users);
} public function hello()
{
return 'hello';
}
}

定义路由

修改文件bootstrap/app.php

$app->router->group([
'namespace' => 'App\Http\Controllers',
], function ($router) {
require __DIR__.'/../routes/web.php';
require __DIR__.'/../app/Http/routes.php';
}); return $app;

打开app/Http/routes.php并添加路由

$router->get('/hello', array(
'uses' => 'UserController@hello'
)); $router->group(['prefix' => 'api'], function() use ($router){
$router->post('person', 'UserController@createUser');
$router->put('person/{id}','UserController@updateUser');
$router->delete('person/{id}','UserController@deleteUser');
$router->get('person[/{id}]','UserController@index');
});

测试API

curl -i -X POST -H "Content-Type:application/json" http://www.lelumen.test/api/person -d '{"id":2,"name":"test1"}'
curl -i -X POST -H "Content-Type:application/json" http://www.lelumen.test/api/person -d '{"name":"test22"}' curl -H "Content-Type:application/json" http://www.lelumen.test/api/person/1 -X PUT -d '{"name":"ttt"}' curl -H "Content-Type:application/json" http://www.lelumen.test/api/person -X GET curl -H "Content-Type:application/json" http://www.lelumen.test/api/person/1 -X GET curl -X DELETE http://www.lelumen.test/api/person/1

空格引起的奇葩,阿哈哈

参考文件

lumen Rest API 起步的更多相关文章

  1. lumen 构建api(dingo api)

    什么是 API API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力, ...

  2. 用lumen构建API的相关流程

    概述 Lumen是一个基于Laravel的微框架,主要用于小型应用和微服务,专注于性能和速度的优化,该框架一个重要的应用就是构建 RESTAPI. 为什么用Lumen构建REST API Lumen访 ...

  3. Lumen开发:结合Redis实现消息队列(3)

    4.运行队列监听器 开启任务监听器 Lumen包含了一个Artisan命令用来运行推送到队列的新任务.你可以使用queue:listen命令运行监听器: php artisan queue:liste ...

  4. dingo/api 使用 知识

    Dingo 能为Laravel提供一整套包括从路由,到认证的RESTful API开发工具 Laravel & Lumen RESTFul API 扩展包:Dingo API(一) —— 安装 ...

  5. 使用HTML5地理位置定位到城市的方法及注意事项

    介绍 本文将简述一下如何通过HTML5和百度地图开放平台提供的API来实现对浏览器的定位.实现效果为显示出用户所在的省市,即: XXX省 XXX市. 实现思路 利用HTML5 提供的API获取到用户的 ...

  6. Canvas游戏计算机图形教程

    TechbrooD   主站 WOW 登录   注册 0首页 1简介 1.1WWW 技术变迁和生态 1.2WWW 学习建议 1.3WWW 互联网基础知识 1.4WWW Web 1.5 WWW Web ...

  7. DirectX API 编程起步 #01 项目设置

    =========================================================== 目录: DirectX API 编程起步 #02 窗口的诞生 DirectX A ...

  8. lumen 使用 dingo API 在 phpunit 中 404 的解决方法, 以及鉴权问题

    1. phpunit.xml 中添加 dingo 相关配置 <env name="API_STANDARDS_TREE" value="x"/> & ...

  9. DirectX API 编程起步 #02 窗口的诞生

    在这篇文章里我们先用 windows API 制作一个窗口出来,以后再用 DirectX API 渲染的东西就会显示在这里,控制台那黑白的画面肯定是没法用的. 每次的代码都会更新到Github 首先贴 ...

随机推荐

  1. 如何系统的了解Kafka

    1.概述 在大数据的浪潮下,时时刻刻都会产生大量的数据.比如社交媒体.博客.电子商务等等,这些数据会以不同的类型存储在不同的平台里面.为了执行ETL(提取.转换.加载)操作,需要一个消息中间件系统,该 ...

  2. 后端程序员之路 32、Index搜索引擎实现分析1-类的设计

    # 1.forward_index 正排索引(正向索引)- filter_t- filter_judge # 2.inverted_index 倒排索引(反向索引)- inverted_pre_sco ...

  3. Java方法详解

    Java方法详解 什么是方法? Java方法是语句的集合,它们在一起执行一个功能. 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 示例: packag ...

  4. while、do...while和for循环

    一.循环 1.1 定义 当满足一定条件的时候,重复执行某一段代码的操作 while和for和do...while是java中的循环 二.while循环 2.1 定义 int i = 0: 初始化值 w ...

  5. 《PYTHON机器学习及实践-从零开始通往KAGGLE竞赛之路》 分享下载

    转: <PYTHON机器学习及实践-从零开始通往KAGGLE竞赛之路> 分享下载 书籍信息 书名: PYTHON机器学习及实践-从零开始通往KAGGLE竞赛之路 标签: PYTHON机器学 ...

  6. 【小菜学网络】MTU

    不同的以太网接入设备,一帧能传输的数据量是有差异的. 普通的以太网卡,一帧最多能够传输 1500 字节的数据:而某些虚拟设备,传输能力要打些折扣.此外,链路层除了以太网还有其他协议,这些协议中数据帧传 ...

  7. MySQL之九---分布式架构(Mycat/DBLE)

    MyCAT基础架构图 双主双从结构 MyCAT基础架构准备 准备环境  环境准备: 两台虚拟机 db01 db02 每台创建四个mysql实例:3307 3308 3309 3310 删除历史环境 p ...

  8. Microsoft Teams 最新功能发布:协作篇

    正在进行的2021年的Microsoft Ignite大会,发布了一系列跟Microsoft Teams相关的新功能,英文介绍请参考 https://techcommunity.microsoft.c ...

  9. MyBatis中模糊查询

    接口 // 模糊查询 List<User> getUserLike(String value); Mapper.xml文件 <!-- 模糊查询 --> <select i ...

  10. MySQL全面瓦解24:构建高性能索引(策略篇)

    学习如果构建高性能的索引之前,我们先来了解下之前的知识,以下两篇是基础原理,了解之后,对面后续索引构建的原则和优化方法会有更清晰的理解: MySQL全面瓦解22:索引的介绍和原理分析 MySQL全面瓦 ...