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实战教程

Laravel5.4实战快速开发自媒体网站教程 Laravel实战教程

打算使用laravel现有的数据库上做开发,会都有哪些坑

使用laravel搭建博客网站-博客的前期准备

使用laravel搭建博客网站-博客的前期准备