前几天,我在面试中被问到REST的服务,可惜对这方面知之甚少,今天介绍一下REST,这个是个什么东西。


有段文字描述REST


Representational State Transfer (REST) is asoftware architecture style consisting of guidelines and best practices forcreating scalable web services. REST is a coordinated set of constraintsapplied to the design of components in a distributed hypermedia system that canlead to a more performant and maintainable architecture.

REST是一种Web的组织架构,下面内容进一步解释。

W3C确定了两类主要的Web服务,一是REST服务,就是使用一套统一的无状态操作来处理Web资源。另一种是SOAP,WSDL(Web服务描述语言)。

REST式服务器有几个特点,无状态性,统一资源定位和可缓存性。

无状态性:在一个REST系统中,服务端并不会保存有关客户的任何状态。也就是说,客户端自身负责用户状态的维持,并在每次发送请求时都需要提供足够的信息。每次API调用都被视作新的请求,服务器不会记录客户端的上下文。

统一资源的定位:REST不使用资源的ID来作为参数,而是将它作为URL的一部分。

可缓存性:REST系统需要能够恰当地缓存请求,以尽量减少服务端和客户端之间的信息传输,以提高性能。

REST式服务的响应通常以一种统一的、双方一致的格式返回给客户端,一般是XML和JSON,IOS大部分是JSON,这个方式简单方便。JSON解析有几个比较有名的框架,我用过的是JSONKit,除此之外还有SBJSON,TouchJSON,YAJL。有段文字这样写到,如果打算在64位架构上,不建议使用JSONKit。JSONKit在访问对象的isa指针,而不是objc_getClass,isa在64位运行是环境中是标签指针(这个翻译不是很理解?),所以建议使用NSJSONSerialization。

以上内容只是了解一下REST,IOS开发重要的点应该在如何更高效的与服务器的交互,提高应用的性能。

缓存有两种方式,一种是按需要缓存,另一种是预缓存。

按需缓存:是指把服务器的内容以某种格式放在本地的文件系统的中,之后对于每次的请求,检查本地是否有相应的数据,是否过期,在决定是否访问服务器重新获取数据。

预缓存:把内容放在本地以备将来访问。持久化可以参考20160816关于ios中的持久化这篇文章。


本文

       完。