2012-03-17 60 views
0

我在Android应用程序中使用此代码:这是REST协议吗?

import org.apache.http.client.methods.HttpPost; 
... 
HttpClient httpclient = new DefaultHttpClient(); 
HttpPost httppost = new HttpPost("http://myServerAddress"); 
httppost.setEntity(new UrlEncodedFormEntity(myArrayList)); 
HttpResponse response = httpclient.execute(httppost); 

是正确的,这不能不说的代码使用REST协议?

--- ---编辑

(服务器侧I使用的脚本返回JSON对象)

+1

该代码只是一个HTTP POST请求,没有什么可以指示它是否是REST或其他。你问来干什么? – 2012-03-17 11:39:48

+1

[Wikipedia](http://en.wikipedia.org/wiki/Representational_state_transfer)说“REST是一种体系结构,与SOAP不同,它是一种协议” - 所以“使用REST协议”有点不正确 – zapl 2012-03-17 12:06:59

+2

@zapl REST是一种建筑风格,这使得它比建筑更抽象。 – 2012-03-17 13:44:44

回答

4

REST是一个服务器端架构。从这个客户端代码无法确定服务器是否具有这样的API架构。 “也许。”

-1

使用REST实现Web服务API意味着您可以通过URL访问它们,就像“您正在获取网页”一样。这意味着与这种WS进行交互非常容易,因为您不必处理SOAP的复杂性,其中您必须在服务器端声明WSDL以及其中的一个......

结论,你有一些实际上对某个URL进行POST的代码。这取决于这个URL访问的实际内容。从WS返回XML或JSON是一种非常普遍的方法,所以这种情况下你几乎可以确定你正在访问一个restful的WS。

希望这会有所帮助!

+1

非常感谢!此代码与PHP脚本进行通信... 并且脚本返回一个JSON对象。 因此我使用其余的协议 – LuZa 2012-03-17 15:47:08

+1

即使这是描述REST的常用方式,这相当于HTTP上的CRUD。 RESTful包括使用通过超链接驱动交互的超媒体类型(也称作HATEOAS =“超媒体作为应用程序状态的引擎”) – bereal 2012-03-17 16:54:50

+0

没错,访问URL不是REST的原因。所以我不认为这个答案是正确的。 – 2012-03-17 17:34:46

0

您的一段代码显示您使用HTTP协议,而不是您使用REST。 REST是一种设计认可而非协议。

这意味着您将POST发送到REST服务器。因为这是一个POST,所以你发布的值应该在Request Body中。所以第一个问题:您的REST服务器使用Witch格式来交换数据? JSON,XML?其他一些格式?

我认为这是JSON。第二个问题:您的httpclient是否可以发送JSON内容?

一个REST POST的一个典型的例子是 POST上的 “http:// myServerAddress /车” 与JSON在请求体{ “品牌”: “福特”, “模型”: “野马”}

您可以使用像Firefox的RESTClient这样的firefox插件来手动尝试在您的服务器上执行POST请求。完成你的android代码后会更容易。

1

严格来说,REST既不是协议也不是架构,而是架构'风格'(创建架构或架构的一部分的特定方式)。对于确认REST风格的架构被称为RESTful

从语用角度讲,REST使用HTTP协议来创建,读取,更新和删除(CRUD)可通过URL寻址的资源,使用HTTP POST(创建),HTTP GET(读取) HTTP PUT(更新)和HTTP DELETE(删除)。

更多理论上来说,REST是指表示状态转移,其中“表示状态”是指在(HTTP)请求中发送或接收的资源表示(获取或发布请求或响应的内容),以及事实上,通过执行请求,您将资源的“状态”从客户端“转移”到服务器,反之亦然。

除了可通过URL唯一寻址资源的主要标准以及CRUD的HTTP动词(POST,PUT等)的使用外,还有一些REST的方面,例如状态转换理想情况下应该仅通过资源中提供的链接发生,资源应该基于链接关系类型链接,并且...但它可以得到一个相当快的宗教信仰:-)

我会试图调用一个Archticture RESTful,如果它有正确的资源唯一可寻址的URLS和如果它使用POST,GET,PUT和删除CRUD ...

希望有帮助...