laravel开发网站实例-----2
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了laravel开发网站实例-----2相关的知识,希望对你有一定的参考价值。
发现一个配置上的问题:解决除了’/以外的其他路由都不生效
nginx没有开启rewrite功能,所以nginx识别不了路由。因为nginx是在Laravel底层的,所以必须得先满足nginx才能满足php。
在配置文件中加入:
set $root_path C:\\Users\\laodiao\\Downloads\\www\\nginx-1.15.1\\html\\acm\\public;
root $root_path;
index index.php index.html index.htm;
try_files $uri $uri/ @rewrite;
location @rewrite
rewrite ^/(.*)$ /index.php?_url=/$1;
//修改下面的配置文件为这种
location ~ \\.php$
fastcgi_split_path_info ^(.+\\.php)(/.+)$;
root html/acm/public;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index /index.php;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
重启nginx服务
接口开发
需求文档描述
在进行实际的开发之前,首先得弄明白实现的系统有哪些功能
我要做的是一个协会网站,设计的功能有如下几个
1、用户管理系统
2、协会新闻系统
3、学习资源分享系统
4、竞赛报名和管理员后台管理系统
用户管理系统api研发
连接数据库设置,到.env文件中修改连接到mysql数据库的配置
DB_DATABASE=acm
DB_USERNAME=zhangliao
DB_PASSWORD=zhangLiao2018
到 database/migrations 中编写用户表数据库迁移
public function up()
Schema::create(users, function (Blueprint $table)
$table->increments(id);
$table->string(name);
$table->bigInteger(schoolid);
$table->string(email)->unique();
$table->string(password);
$table->integer(sex);
$table->text(xueyuan);
$table->text(zhuanye);
$table->integer(shifouhuiyuan);
$table->rememberToken();
$table->timestamps();
);
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
Schema::dropIfExists(users);
然后使用 php artisan migrate 来进行迁移(即创建数据表),创建好新的数据库之后,有个 migrations 数据表是用于记录迁移过程的。使用 php artisan migrate:rollback 来回滚刚才的操作迁移。创建好数据库之后,需要做对象持久化操作。即用模型对应数据表的方法来对数据字段进行处理。
laravel的模型文件是放在 app/ 目录下的,默认生成了一个User.php的模型文件。新建一个Models的目录,并将User.php放到里面去.编辑器全局搜索 App\\User 替换为 App\\Models\\User 。
mkdir app\\Models
mv app\\User.php app\\Models\\User.php
根据需求,改成
class User extends Authenticatable
use Notifiable;
protected $table = "users";
protected $fillable = [
name,schoolid, email, password,sex,xueyuan,zhuanye,shifouhuiyuan,
];
protected $hidden = [
password, remember_token,
];
利用 tinker 工具创建用户对象
php artisan tinker
App\\Models\\User::create([name=> chaojilaji,schoolid=> 2015212018, email=>3328118489@qq.com,password=>bcrypt(123123),sex=> 1,xueyuan=> cs,zhuanye=> cs,shifouhuiyuan=> 1])
//创建成功,结果如下:
App\\Models\\User #2903
name: "chaojilaji",
schoolid: "2015212018",
email: "3328118489@qq.com",
sex: "1",
xueyuan: "cs",
zhuanye: "cs",
shifouhuiyuan: "1",
updated_at: "2018-07-25 09:19:57",
created_at: "2018-07-25 09:19:57",
id: 1,
现在数据库中有数据了,研发接口开始了
实现资源控制器来获取用户输入和返回信息的接口(没有实际意义,demo)
使用命令创建一个资源控制器
php artisan make:controller UsersController --resource
生成资源控制器针对的是rest ful模式,会生成以下几个方法
index
create
store
show
edit
update
destroy
然后为资源控制器定义一个路由
Route::group([prefix => demo], function()
Route::resource(users, UsersController);
);
//定义了一个路由组,以api为前缀
然后实现了资源控制器中的store方法
public function store(Request $request)
//
$rs[name] = $request->input(name);
$rs[schoolid] = $request->input(schoolid);
$rs[email] = $request->input(email);
$rs[password] = $request->input(password);
$rs[sex] = $request->input(sex);
$rs[xueyuan] = $request->input(xueyuan);
$rs[zhuanye] = $request->input(zhuanye);
$rs[shifouhuiyuan] = $request->input(shifouhuiyuan);
$rs[info] = 请求成功;
return response($rs,200);
资源控制器处理的动作
方法 | 路径 | 动作 | 路由名称 |
get | /users | index | users.index |
get | /users/create | create | users.create |
post | /users | store | users.store |
get | /users/id | show | users.show |
get | /users/id/edit | edit | users.edit |
put/patch | /users/id | update | users.update |
delete | /users/id | destory | users.destory |
使用postman对接口进行测试
注意:使用postman对接口进行测试的时候,如果使用post方法,默认会有csrf防护,所以应该关掉csrf防护。
"name": "chaojilaji1",
"schoolid": "2015211795",
"email": "33281184891@qq.com",
"password": "123456",
"sex": "0",
"xueyuan": "cs",
"zhuanye": "cs",
"shifouhuiyuan": "1",
"info": "请求成功"
测试成功的话,返回的结果如上
安装dingoapi扩展
1、下载dingo/api
composer require dingo/api:2.0.0-alpha2
2、先将 dingo 的配置文件 publish 出来
php artisan vendor:publish
Which provider or tags files would you like to publish?:
[0] Publish files from all providers and tags listed below
[1] Provider: Dingo\\Api\\Provider\\LaravelServiceProvider
[2] Provider: Fideloper\\Proxy\\TrustedProxyServiceProvider
[3] Provider: Illuminate\\Mail\\MailServiceProvider
[4] Provider: Illuminate\\Notifications\\NotificationServiceProvider
[5] Provider: Illuminate\\Pagination\\PaginationServiceProvider
[6] Provider: Laravel\\Tinker\\TinkerServiceProvider
[7] Tag: laravel-mail
[8] Tag: laravel-notifications
[9] Tag: laravel-pagination
> 1
Copied File [\\vendor\\dingo\\api\\config\\api.php] To [\\config\\api.php]
Publishing complete.
打开 .env 文件,加入这五条语句
.
.
.
API_STANDARDS_TREE=prs
API_SUBTYPE=larabbs
API_PREFIX=api
API_VERSION=v1
API_DEBUG=true
然后在config/app.php中注册服务提供者到providers
Dingo\\Api\\Provider\\LaravelServiceProvider::class
测试dingo的安装情况
来到routes/api.php中,修改默认的路由为:
$api = app(Dingo\\Api\\Routing\\Router);
$api->version(v1, function($api)
$api->get(version, function()
$ans[info] = v1;
$ans[code] = 200;
return response($ans);
);
// $api->resources(users, UsersController);
);
$api->version(v2, function($api)
$api->get(version, function()
return response(this is version v2);
);
);
使用get的方法对这两个api进行测试
结果如下:
"info": "v1",
"code": 200
以上是关于laravel开发网站实例-----2的主要内容,如果未能解决你的问题,请参考以下文章
如何使用单个 Laravel 代码实例配置和运行具有各自数据库的多个网站
Laravel5.4实战快速开发自媒体网站教程 Laravel实战教程