yii2 RESTful 接口 api -1 : 接口的基本配置

原创 2015年11月18日 10:01:53

文档:http://www.yiichina.com/doc/guide/2.0/rest-quick-start

关于yii2的接口,使用起来是比较方便,配置起来也比较方便,不过按照模块和非模块的配置,在一些地方是不一样的

先配置一个普通的restful

我配置的是以模块的方式进行的配置:

1. 配置好模块

2. 定义controller   ,继承于 yii\rest\ActiveController

<?php
namespace myapp\frontend\code\ECM\Customer\controllers;

use Yii;

use yii\rest\ActiveController;

class IndexController extends ActiveController
{
    public $modelClass = 'myapp\frontend\code\ECM\User\models\Product';
	
}

3.创建资源:

 数据库部分:

CREATE TABLE IF NOT EXISTS `restful_product` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `description` varchar(255) DEFAULT NULL,
  `image` varchar(255) DEFAULT NULL,
  `status` int(5) DEFAULT NULL,
  `created_at` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;

--
-- 转存表中的数据 `restful_product`
--

INSERT INTO `restful_product` (`id`, `name`, `description`, `image`, `status`, `created_at`) VALUES
(1, 'terry', 'terry des', 'terry img', 1, '2015-11-17 15:25:21'),
(2, 'xxxx', 'ddddd', NULL, NULL, NULL),
(3, 'xxxx', 'ddddd', NULL, NULL, NULL),
(4, 'xxxx', 'ddddd', NULL, NULL, NULL),
(5, 'xxxx', 'ddddd', NULL, NULL, NULL);

创建完数据表  restful_product

剩下的工作就是创建model:

<?php

namespace myapp\frontend\code\ECM\User\models;
use yii\db\ActiveRecord;

class Product extends ActiveRecord
{
	# 定义rule
	public function rules(){
		return [
			[['name','description'],'required'],
		];
	}
	public static function tableName()
    {
        return 'restful_product';
    }
	
	

}

到这里,资源就建立好了

4.进行配置

在配置的时候,一定要注意,在下面的文件都可以配置

frontend/config/main.php  ,  frontend/config/main-local.php   

common/config/main.php , common/config/main-local.php

不要重复,曾经,我配置mailer 的时候,就是因为在两个配置文件配置了mailer组件,导致我的配置没有生效,搞了我半天晕头转向,最后发现是重复配置,

在哲学里面,灵活的东西,对应的就是使用的复杂性,这是无可避免,所以,没有最好,只有更适合,yii2是比较适合架构师玩,定制好规则和example,然后让码农们

填写代码,如果是初学者,玩玩thinkphp,如果玩yii2,则不是很适合,什么都有一个进化的过程(http://blog.csdn.net/terry_water),所以没有最好的框架,只有更适合自己的现状,和公司现状的框架,找女人也是这样吧。

下面要配置的是urlManage:

'urlManager' => [
			'class' => 'yii\web\UrlManager',
			'enablePrettyUrl' => true,
			'enableStrictParsing' => true,
			'showScriptName' => false,
			'rules' => [
				'' => 'cms/index',
				['class' => 'yii\rest\UrlRule', 'controller' => 'customer/index',
				  'pluralize' => false,
				],
				//'POST customer' => 'customer/index/create',
			],
			
		],
		'request' => [
			'class' => '\yii\web\Request',
            'enableCookieValidation' => false,
            'parsers' => [
                'application/json' => 'yii\web\JsonParser',
            ],
			'cookieValidationKey' => 'O1d232trde1xww-M97_7QvwPo-5QGdkLMp#@#@',
		],


在上面,需要配置request  组件    的 parsers子项,这个子项的意思是解析,也就是对于request请求,按照json格式,这样,发送post请求,通过接口插入数据,可以用json格式,而不是用繁琐的xml格式费劲。

对于urlManager组件  的rules子项,

['class' => 'yii\rest\UrlRule', 'controller' => 'customer/index',
				  'pluralize' => false,
				],

class的值是系统默认的, controller的值是您的controller的路径,如果您不使用模块,直接在controller下面建立了一个CustomerController,那么controller的值是customer, 由于我使用的是customer模块,因此controller 是customer/index

pluralize的意思是不使用复数,这样可以不需要加s

5

测试:

get 方式可以直接使用浏览器访问

post请求:

curl -i -H "Accept:application/json" -H "Content-Type:application/json" -XPOST "http://10.10.10.252:800/index.php/customer/index" -d '{"name": "xxxx", "description":"ddddd"}'

执行后,发现被保存到数据表中


官方给予的:

    GET /users: 逐页列出所有用户
    HEAD /users: 显示用户列表的概要信息
    POST /users: 创建一个新用户
    GET /users/123: 返回用户 123 的详细信息
    HEAD /users/123: 显示用户 123 的概述信息
    PATCH /users/123 and PUT /users/123: 更新用户123
    DELETE /users/123: 删除用户123
    OPTIONS /users: 显示关于末端 /users 支持的动词
    OPTIONS /users/123: 显示有关末端 /users/123 支持的动词

对应的方法为:

    index: list resources page by page;
    view: return the details of a specified resource;
    create: create a new resource;
    update: update an existing resource;
    delete: delete the specified resource;
    options: return the supported HTTP methods.

[
    'PUT,PATCH users/<id>' => 'user/update',
    'DELETE users/<id>' => 'user/delete',
    'GET,HEAD users/<id>' => 'user/view',
    'POST users' => 'user/create',
    'GET,HEAD users' => 'user/index',
    'users/<id>' => 'user/options',
    'users' => 'user/options',
]


为什么可以直接访问,因为在资源建立的时候,activerecord已经把上面的方法都默认建立好,如果您想更改对应的方法

可以在资源model里面新建一个对应的方法即可重写。










版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

yii2中restful url访问配置, 登陆接口access-token验证类

登陆接口access-token验证类 Controller下新建BaseActiveController.php /** *接口登陆验证 * @author 爱博 * 1.0 * *...

yii2-restful的接口优化和实现互相调用

最近在开发项目的过程中,突然间遇到一些业务场景,比如在一些实际的业务中,restful的接口是分别对应一种请求的资源的,比如在一个首页内容页面上我们需要请求用户users,分类category,视频列...

yii2-restful的全局认证和局部认证的接口设置

yii2在使用restful作为接口的时候,yii\rest\Controller中已经把全局的csrf验证设置为false, public $enableCsrfValidation = fals...

Yii2.0 配置Restful API

一、配置url形式1.1 配置urlManager应用元件'components' => [ 'urlManager' => [ 'class' => 'yii\web\Url...

yii2框架-restful的自定义api(二十二)

昨天的大新闻---国家的相关监管部门正式出台了“网约车”的合法法规!滴滴,UBER,易到,神州专车等积极响应,表示支持网约车的新规!一方面看来是这些企业受益,其实从侧面映射中国的移动互联网中的o2o服...

node.js项目改进之restful API接口支持

神奇的restful规范这里直接引用百度的解释什么是restful建立restfulAPI模块这个模块的作用主要是做一些前置操作和指引,并且规范路径,同时对错误进行初步处理app_need/restf...

Restful风格API接口开发springMVC篇

Restful风格API接口开发springMVC篇 ADO.NET视频教程需要的加qq:1225462853,备注:程序员学习视频 ==============================...

Restful风格API接口开发springMVC篇

Restful风格的API是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机...

Java 调用Restful API接口的几种方式--HTTPS

摘要:最近有一个需求,为客户提供一些Restful API 接口,QA使用postman进行测试,但是postman的测试接口与java调用的相似但并不相同,于是想自己写一个程序去测试Restful ...
  • zpf336
  • zpf336
  • 2017-06-20 10:29
  • 4980
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)