教程集 www.jiaochengji.com
教程集 >  脚本编程  >  php  >  正文 使用Zend_Rest_Server做Web Service架构

使用Zend_Rest_Server做Web Service架构

发布时间:2015-01-17   编辑:jiaochengji.com
REST 定义了一组体系架构原则,您可以根据这些原则设计以系统资源为中心的 Web 服务,包括使用不同语言编写的客户端如何通过 HTTP 处理和传输资源状态。

    REST 定义了一组体系架构原则,您可以根据这些原则设计以系统资源为中心的 Web 服务,包括使用不同语言编写的客户端如何通过 HTTP 处理和传输资源状态。 如果考虑使用它的 Web 服务的数量,REST 近年来已经成为最主要的 Web 服务设计模型。 事实上,REST 对 Web 的影响非常大,由于其使用相当方便,已经普遍地取代了基于 SOAP 和 WSDL 的接口设计。

    基于 REST 的 Web 服务的主要特征之一是以遵循 RFC 2616 定义的协议的方式显式使用 HTTP 方法。例如,HTTP GET 被定义为数据产生方法,旨在由客户端应用程序用于检索资源以从 Web 服务器获取数据,或者执行某个查询并预期 Web 服务器将查找某一组匹配资源然后使用该资源进行响应。
REST 要求开发人员显式地使用 HTTP 方法,并且使用方式与协议定义一致。 这个基本 REST 设计原则建立了创建、读取、更新和删除(create, read, update, and delete,CRUD)操作与 HTTP 方法之间的一对一映射。 根据此映射:
1)若要在服务器上创建资源,应该使用 POST 方法。
2)若要检索某个资源,应该使用 GET 方法。
3)若要更改资源状态或对其进行更新,应该使用 PUT 方法。
4)若要删除某个资源,应该使用 DELETE 方法。
客户端:
 

复制代码 代码如下:

<?php
$base_url = 'http://www.jiaochengji.com/';
$client = new Zend_Rest_Client($base_url);
// 设置全局变量

$headers = array();

$client->headers($headers);

// 远程调用, 调用sayHello接口,传递两个字符串参数
$response = $client->sayHello('Hello', 'world!')->get();

if ($this->_request->getParam('debug')) {
    echo "<pre>";
    print_r(json_decode($response, 1));
    echo "</pre>";
} else {
    echo $response;
}
 

服务器端:
 

复制代码 代码如下:

<?php
// 捕获请求头信息
$headers = $this->_request->getParam('headers');
Zend_Registry::set('headers', $headers);
       
$server = new Zend_Rest_Server();
$server->setClass('Lijiabeibei_Blog');
$server->handle();

//接口处理类:(Lijiabeibei_Blog)
class Lijiabeibei_Blog {
    protected $retval = array();

    function __construct() {
       
    }   

    /**
     * 测试接口
     * @param string $a
     * @param string $b
     */
    function sayHello($a, $b) {
        if (!$this->retval['success']) {
            $this->retval['debug']= print_r(
                Zend_Registry::get('headers'), 1
            );
            return json_encode($this->retval);
        }
        $this->retval['debug'] = $a .' '.$b;

        return json_encode($this->retval);
    }
}

如果要设置多个服务类,可以这样:
$server = new Ylili_Rest_Server();
$server->setClass('Lijiabeibei_Blog');
$server->setClass('Lijiabeibei_Shop);
注意,多个服务器类的方法命名不要冲突。

您可能感兴趣的文章:
使用Zend_Rest_Server做Web Service架构
XML Web Service 基础 (转微软MSDN)-Web_Service开发-.NET教程-
简单理解Web Service三种实现方式
golang微服务框架对比_最强开源微服务框架,全网独家整理
C# Winform调用WEB Service API的示例代码
基础教程介绍——什么是SOA
10个让你爱不释手的Python开源框架
用Composer构建属于你的PHP框架
Golang 微服务教程(一)
golang微服务框架对比_Golang 微服务教程(一)

[关闭]
~ ~