Php 用肥皂洗还是不用肥皂洗?什么对我的Web服务最好?

Php 用肥皂洗还是不用肥皂洗?什么对我的Web服务最好?,php,web-services,soap,Php,Web Services,Soap,我需要创建一个web服务,将XML数据返回给我的一些客户端。 在我为web所做的任何事情中,80%都在谈论使用 我的问题是:任何客户机都可以像普通XML一样读取获取的数据吗? SOAP有替代品吗?REST是SOAP的轻量级替代品。它使用现有的HTTP方法,如GET、POST、PUT、DELETE。从概念上讲,URL标识服务器上的资源,HTTP方法定义要执行的操作 REST是一种体系结构风格,因此在如何实现它方面非常灵活。该体系结构只是一个指导原则,如果应用程序满足RESTWeb服务的定义特征,则

我需要创建一个web服务,将XML数据返回给我的一些客户端。
在我为web所做的任何事情中,80%都在谈论使用

我的问题是:任何客户机都可以像普通XML一样读取获取的数据吗?

SOAP有替代品吗?

REST是SOAP的轻量级替代品。它使用现有的HTTP方法,如GET、POST、PUT、DELETE。从概念上讲,URL标识服务器上的资源,HTTP方法定义要执行的操作

REST是一种体系结构风格,因此在如何实现它方面非常灵活。该体系结构只是一个指导原则,如果应用程序满足RESTWeb服务的定义特征,则认为它是RESTful的

JSON通常用作传输,而不是XML。其优点是JavaScript可以立即解析JSON,许多服务器端技术都有将JSON反序列化为对象的库。虽然建议使用JSON,但您可以将任何内容类型与REST一起使用,包括XML

有关更多详细信息,请参阅

示例:

获得福特雷鸟的汽车等级

HTTP GET http://example.com/cars/ford/thunderbird/8NUY1234  

$.ajax({
    url: '/cars/ford/thunderbird/8NUY1234',
    type: "GET",  /* implicit default, listed for clarity only */
    success: function(data) {
        alert(JSON.stringify(data) );  /* output json
        alert("engine = " + data.engine);
    }
});
在集合中插入车辆

HTTP POST http://example.com/cars/ford/f150/?vin=F14564564564&color=blue&engine=I6&...

// insert record on server.
var dataString = "vin=F143567547&color=blue&engine=I6"
$.ajax({ 
    url: '/cars/ford/f150',
    data: dataString,
    type: "POST",
    success: function(data) {
    }
});

我得说这在很大程度上取决于你的要求

  • JSON是轻量级的,因为它没有XML那么大的开销。如果有很多短键值部分,那么在XML中传输的大部分字节是标记和属性定义,而不是信息数据本身

  • JSON非常适合在JavaScript应用程序中使用。然而,大多数编程语言本机支持JSON;其中,流行的语言如PHP或——自Flash 10.2以来——Actionscript 3

XML生活在定义良好(并广泛传播)的其他标准的丰富生态圈中。其中:

  • XSD是一种模式定义,您可以在其中定义信息的结构以及客户机对信息的期望。这些可以与名称空间一起使用。许多编程语言(如Java)或框架(如.NET)可以基于此模式自动生成类和对象

  • XSL(T)是一种转换语言,它可以将给定的XML转换为能够自动适应客户的文档格式(例如,针对其网站的不同部分的不同HTML片段)

SOAP充分利用了这些标准,因为它提供了关于客户端如何使用您的服务的方案和定义良好的契约。许多语言(其中包括PHP、Java)和许多框架(其中包括.NET和Zend Framework)都可以自动检测服务提供的接口,并自动生成面向对象的接口,而无需客户端解释SOAP协议——它定义得非常好,可以自动完成。一些框架(例如Zend、.NET)甚至提供了在定义类之后自动为您生成SOAP服务的功能,这要归功于定义良好的标准

正如jmort253已经说过的,REST是另一种方法:您没有太多的标准和限制,因此在实现中非常自由

长话短说:我建议对必须作为数据传输的复杂信息使用SOAP,对非复杂数据使用REST,这些数据主要被视为键=>值对,没有很多维度

SOAP的一个很好的例子是adidas miCoach API,它必须处理大量的训练数据,并且必须处理大量的训练结果


另一方面,Twitter主要处理key=>value信息(如tags=>messages),非常适合RESTAPI。

今天,我为自己的站点创建了一个Web服务,用于处理来自jQuery的请求并返回JSON数据。那么,我是否在“不知情”的情况下使用REST?这有点争议,但我相信这可能是RESTful。这取决于您遵循其余文章中的指导原则的数量。简单地说,这个概念非常相似。您基本上是点击一个URL,让服务器根据您使用的HTTP请求方法执行不同的操作。如果您可以通过AJAX调用来检索XML或JSON,那么您就可以编写REST服务了。+1-这是一个非常好的客观答案,突出了SOAP和REST的优缺点。