有关REST和服务器逻辑的问题

好吧,首先我是一个竞争的服务器noob。 所以我很抱歉,如果我用我的无知使你不高兴。

我目前已经build立了一个linode,并安装了MySQL和apache。 现在,我试图学习如何使用REST从我的iPhone应用程序通信到服务器。

我希望应用程序向服务器发送一组坐标,并让服务器对其数据进行search,并返回其他附近坐标的列表。 我也想尽可能less地使用带宽。

我听说GET是做这件事的好方法,但是我也听说外部信息很容易读取信息(比如坐标)。 安全性是一个问题,我希望所有发送到服务器或从服务器接收的信息都是私有的。 我应该使用POST来达到这个目的吗? 有没有更好的办法? 我可以使用JSON发送请求吗(带宽使用较less)?

REST是一个很好的途径吗? 我所看到的很多教程似乎只是获取或操纵数据表,而幕后并没有太多的服务器逻辑。 是SOAP还是别的更好?

目前我还不清楚这一点,而我的google-fu让我慢了一点,所以任何信息都是非常有帮助的。

GET和POST都不能通过HTTP安全,如果安全性很重要,你应该考虑获得一个SSL证书,即使是一个自签名的证书也可以 – 告诉你的客户端(我猜这是某种手机/平板电脑?)信任证书。

REST可能是一个很好的方法,因为它给你一个很好的简单的标准。 目前您可能只有一个端点,但如果您使用REST构build,则随着应用程序的增长,您可以轻松添加更多。 REST是一个标准,而不是一个协议。 这意味着,REST API应该符合这些标准;

  • 从服务器获取数据应该使用GET完成。 GET绝不能改变资源。
  • 服务器上的更改(创build,更新)资源应该使用POST完成。
  • 所有terminal/方法应该有自己的URL(IE api.example.com/get_something而不是api.example.com/api?method=get_something)
  • 响应应该根据文件types返回(所以get_something.xml应该返回xml,get_something.json应该返回JSON等,你不必支持所有的格式,但你应该可以通过文件types请求)。

请注意,GET和POST都可以为服务器上的应用程序提供额外的参数,但在GET的情况下,通常只用于过滤查询,而使用POST则可以提供有关要logging的更改的详细信息。

关于JSON问题,通常JSON将使用更多的带宽(只有一点点),但是更容易处理。

例如,以下是可能的API响应的纯文本版本;

-25.90962,161.08639 -4.11525,-91.31969 -13.76025,147.22927 

但是这里有一个JSON响应

 { coordinates:[ { lat: -25.90962, long: 161.08639 } { lat: -4.11525, long: -91.31.969 } { lat: -13.76025, long: 147.22927 } ] } 

JSON的例子是易于机器可读,而纯文本将不得不被parsing。 请记住像JSON这样的文件types,您可以使用GZIP压缩来显着减less需要传输的数据。

注意:当你进入它的细节时,POST应该只创build新的资源,而PUT只应该改变现有的资源。