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. 学习java之电脑的常用快捷键和DOS窗口下的常用命令

    学习java之电脑的常用快捷键和DOS窗口下的常用命令 电脑一些常用的快捷键 win快捷键: 单独按Windows:显示或隐藏 "开始"功能表 Windows+BREAK:显示&q ...

  2. 力扣168. Excel表列名称

    原题 1 class Solution: 2 def convertToTitle(self, n: int) -> str: 3 s = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ ...

  3. dubbo使用和配置讲解

    1. 分布式系统中相关概念 1.1 互联网项目特点及目标 1.1.1 特点: 用户多 流量大.并发高 海量数据 易受攻击 功能繁琐 变更快 1.1.2 指标及相关目标 互联网项目三高目标:高并发.高可 ...

  4. 40. 组合总和 II + 递归 + 回溯 + 记录路径

    40. 组合总和 II LeetCode_40 题目描述 题解分析 此题和 39. 组合总和 + 递归 + 回溯 + 存储路径很像,只不过题目修改了一下. 题解的关键是首先将候选数组进行排序,然后记录 ...

  5. spring-cloud-alibaba之Nacos

    在微服务构架中,集群服务间的需要调用时就需要知道各个服务的IP和提供服务的端口等信息,如果每个部署一个服务就配置一次,那么必然时非常麻烦的,因此我们需要一个能够统一管理的东西来解决这个问题,由此诞生了 ...

  6. redis使用ssh密钥远控靶机

      首先说明一下我们的实验目的,我们这个实验需要利用一种公有密码,将公有密钥写入要攻击的服务器的redis数据库,然后使用我们自己的私钥进行远控肉鸡的操作. 实验环境:centos7(靶机,版本无太大 ...

  7. rest framework Request

    要求 如果你正在做基于REST的Web服务的东西......你应该忽略request.POST. -马尔科姆Tredinnick,Django开发组 REST框架的Request类继承了标准HttpR ...

  8. 基于ABP框架的SignalR,使用Winform程序进行功能测试

    在ABP框架里面,默认会带入SignalR消息处理技术,它同时也是ABP框架里面实时消息处理.事件/通知处理的一个实现方式,SignalR消息处理本身就是一个实时很好的处理方案,我在之前在我的Winf ...

  9. ajax轮询原理及其实现方式

    ajax轮询原理及其实现方式 ajax轮询的两种方式 方式1:设定一个定时器,无论有无结果返回,时间一到就会继续发起请求,这种轮询耗费资源,也不一定能得到想要的数据,这样的轮询是不推荐的. 方式2: ...

  10. go语言几个最快最好运用最广的web框架比较

    比较一下常用的golang web框架 令人敬畏的Web框架 如果你为自己设计一个小应用程序,你可能不需要一个Web框架,但如果你正在进行生产,那么你肯定需要一个,一个好的应用程序. 虽然您认为自己拥 ...