『壹』 在rest接口规范中,post成功创建一个新的资源后,服务器应该返回状态码是多少
2xx
200 OK
所有人都知道 200 OK 是什么。这估计是最经常被滥用的状态码。很多人在应该使用其它 2xx 状态码时都选用了 200 OK 来表示。
201 Created
如果你在设计一个 REST API,或者一个 CRUD API,当你使用 POST(或者 PUT)成功创建一个新的资源后,服务器应该返回 201 Created 同时在 header 的 Location 字段给出刚刚创建好的这个资源的 URI。
例如说,如果你使用 POST 请求通过 \comments URI 创建了一个新的评论,那么服务器应该返回 201 Created,同时带上形如Location: \comments\1234 的字段表明新创建的评论的 URI。
202 Accepted
如果服务器在接受请求后,需要进行一个异步处理才能有结果,并且觉得不需要让 TCP 连接保持到结果出来再返回,它可以返回 202 Accepted,意思是请求已接受,但没有立即可返回的结果。
204 No Content
在一个 REST API 或者 CRUD API 里面,当你使用 PUT 成功更新一个资源后,如果服务器完整接受了客户端的更新,没有拒绝也没有额外更新,那实际上是不需要返回任何东西的,因为现在客户端和服务器端已经拥有完全一致的状态。在这种情况下,服务器可以返回 204 No Content,同时 body 为空,客户端就知道它的状态已经跟服务器端同步了。
206 Partial Content
断点续传和多线程下载都是通过 206 Partial Content 实现的。
请求的 header 必须包含一个 Range 字段,表明自己请求第几个字节到第几个字节的内容。如果服务器支持的话,就返回 206 Partial Content,然后使用 header 的 Content-Range 指明范围,并在 body 内提供这个范围内的数据。
3xx
301 Moved Permanently
永久性重定向。目标由 header 的 Location 字段给出,同时 body 中也应该有指向目标的链接。新请求使用的方法应该和原请求的一致。如果用户使用 HEAD 和 GET 以外的方式发起原请求,客户端在遇到 301 Moved Permanently 后应当询问用户是否对新的 URI 发起新请求。
302 Found
临时性重定向。
这应该是浏览器实现最不符合标准的一个状态码了。理论上,除了临时性这一点,302 Found 跟 301 Moved Permanently 应该是完全一样的。然而实质上,很多浏览器在遇到 302 Found 后就会使用 GET 去请求新的 URI,而无论原请求使用的是何种方法。由于这种现象的普遍存在,使得这成为了一个与书面标准相违背的事实标准,新的客户端在实现时很难选择应该遵守哪一个标准,所以 RFC 2616 专门新增了 303 See Other 和 307 Temporary Redirect 两个状态码来消除二义性。
303 See Other
临时性重定向,且总是使用 GET 请求新的 URI。
304 Not Modified
如果客户端发起了一个「条件 GET」,同时资源确实没被修改过,那么服务器端就应该返回 304 Not Modified,同时 body 不包含任何内容。
所谓的「条件 GET」,是指 GET 的 header 带上了 If-Modified-Since 或 If-None-Match 字段。这两个 header 就是「条件」,如果条件符合了 GET 就应该正常执行,否则就应该返回 304 Not Modified,以便告诉客户端它想要请求的资源在上一次请求之后没有被更新过,客户端可以继续使用之前的版本。
307 Temporary Redirect
临时性重定向,且总是使用原请求的方法来进行新请求。
4xx
400 Bad Request
服务器无法理解请求的格式,客户端不应当尝试再次使用相同的内容发起请求。
401 Unauthorized
请求未授权。如果请求 header 没有 Authorization 字段,服务器端应该在返回 401 Unauthorized 的同时在 header 中用 WWW-Authorization 字段指出授权方式,以便客户端带上登录信息重新发起请求。如果 Authorization 字段已经存在,则表明登录信息不正确。
402 Payment Required
需要支付。这是一个在任何浏览器中都没有被实现的状态码,仅预留将来使用。
网络曾经有一个部门印过一批背上写着 402 Payment Require 的衣服,并且开玩笑说这批衣服最适合在互联网企业员工讨薪时穿。
403 Forbidden
禁止访问。即使使用 Authorization 字段提供登录信息也会得到相同的结果。
如果客户端使用 HEAD 以外的方法请求,403 Forbidden 必须同时在 body 中返回禁止访问的原因。如果原因不能够公开,则应该使用404 Not Found。
404 Not Found
找不到如何与 URI 相匹配的资源。服务器无需指出资源是临时性不存在还是永久性不存在,但如果服务器端知道该资源已经被永久性删除则应该返回 410 Gone。
404 Not Found 是服务器端在不愿意提供理由的情况下拒绝提供资源的最佳借口。
405 Method Not Allowed
请求的方法被拒绝。
如果你有一个 REST API 或 CRUD API 被设计为只读,那么在遇到 PUT、POST 或者 DELETE 方法时服务器端都应该返回 405 Method Not Allowed,同时在 header 的 Allow 字段说明允许的方法(如 GET 和 HEAD)。
409 Conflict
冲突,且需要用户手工解决。
如果你使用 git(或者其他源代码管理软件),你已经知道「冲突」是什么了。409 Conflict 通常发生在 PUT 请求时,如果要更新的资源已经被其他人更新过了,你再更新就可能产生冲突。
410 Gone
如果服务器端将此资源标记为已被永久性删除,则应该使用 410 Gone 而非 404 Not Found,其用意在于告诉客户端资源是被有意删除的,而且删除是永久性的,客户端不应该再保留这个 URI 的链接。
举例来说,你有一个 REST API 或 CRUD API 用于向用户提供优惠信息。有一则优惠的 URI 是 /promotions/1234,但由于优惠活动已经结束了,所以这一则优惠信息不再有效且应当被永久性删除,那么这时候服务器端就应该让该 URI 永远返回 410 Gone 了。
412 Precondition Failed
条件判断失败,操作不会被执行。
在解释 304 Not Modified 时提到了「条件 GET」的概念,但「条件」本身也可以应用于非 GET 请求,这时候如果条件判断失败服务器端就应该返回 412 Precondition Failed,同时拒绝执行客户端请求的方法。
条件请求可以被看作是一种乐观锁。它不需要服务器端有任何逻辑判断操作是否存在冲突,服务器端只要记录资源的时间戳(或其它版本信息)即可。
5xx
500 Internal Server Error
最常见的服务器端错误。
503 Service Unavailable
服务器端暂时无法处理请求(可能是过载或维护)。
返回 503 Service Unavailable 的意思是当前的状况是临时性的,客户端可以稍后重试。服务器端可以在返回时通过 header 的Retry-After 字段告诉客户端多久后可以重试。如果不提供这个字段的话,客户端应当把 503 Service Unavailable 等同于 500 Internal Server Error 处理。
『贰』 ArcGIS Server REST 服务各类API的主要功能
这个问得比较大,REST是一个Web应用程序框架。ArcGIS REST API提供了简单、开放的接口来访问和使用ArcGIS Server发布的服务。使用ArcGIS REST API通过URL,可以获取和操作每一个服务中的所有资源和操作。使用REST API就是通过URL来向GIS服务器获取资源的操作。
一般客户端从服务器端总是能得到一个资源的表现,在此一般分为两种类型的资源:
Resources(资源,直接反应了服务本身的信息)
Operations(操作,根据服务本身的资源进行某些处理后得到的结果)
Catalog是整个REST APIURL分层等级的根。根下面是这个Server所发布的服务,一共有8种类型的服务:Map Service、Geocode Service、GP Service、Geometry Service、Image Service、Network Service、GeoData Service和Globe Service。每一种Service下面都有不同的操作和资源,而执行这些操作和获取这些资源都是通过URL。
再具体的建议参考《ArcGIS Server REST API Help》。
『叁』 REST API 和WebService有哪些不同
从基本原理层次上说,REST 样式和 SOAP 样式 Web Service的区别取决于应用程序是面向资源的还是面向活动的。例如,在传统的WebService中,一个获得天气预报的webservice会暴露一个WebMethod。而RESTful WebService暴露的不是方法,而是对象(资源)。
在 REST 的定义中,一个 Web Service总是使用固定的 URI 向外部世界呈现(或者说暴露)一个资源。可以说这是一种全新的思维模式:使用唯一资源定位地址 URI,加上 HTTP 请求方法从而达到对一个发布于互联网资源的唯一描述和操作。
『肆』 java 要调用别人提供的rest api接口接口是url 比如实现简单的增加操作 具体实现哪些步骤
第一:先把url存储下来,配置文件,数据库等
第二:在相应的action层调用项目里面的httpClientUtil或者采用apache的httpClient 去请求url,
接下来的操作跟一般的web没区别了
『伍』 如何使用 Oauth 实现一个安全的 REST API 服务
连续2天的Peyote实验后(你可能会找到更好的放松办法),结论终于呈现在你眼前:Amazon是拥有最大的、使用最多的在线网络API的网络服务之一,并且根本不支持OAuth!
经过一个下午长时间的狂想之后,你最终败下阵来,并看到Amazon是如何保持API请求安全的。你不清楚为什么,但读完整页关于如何为Amazon网络服务装配一个请求后,你依然觉得不完全合理。这个“签名”和什么连在一起?代码示例中的“data”参数是什么?这样,你会继续查找关于“安全API设计”的文章。。。
当遇到其他人问同样的问题时,你看到一些指出"HMAC"或其他事物的优秀回复,但还是不太确定。
你找到其他鼓励你使用“HMAC”的文章并且你正H-FINE地使用它,如果有人将“HMAC”解释成简明的H_ENGLISH的话。
你的确偶遇了一个有道理的蒸馏的基本概念,它是这样一简明的英语描述的:
一个服务器和客户端知道一个公钥和一个私钥;只有服务器和客户端知道私钥,但每个人都知道公钥。。。但不关心别人所知道的。
一个客户端生成一个唯一的HMAC(哈希)表示它到服务器的请求。通过把请求数据(参数和值或XML/JSON或任何它计划发送的数据)以及请求数据的散列blob和私钥结合来实现。
客户端随后将这个HASH以及所有它将要发送的参数和值一并发给服务器。
服务器接到请求,并使用与客户端相同的方式重新生成自己独有的基于提交值的HMAC(哈希)。
然后,服务器比较这两个HMAC,如果相同,服务器就信任这个客户端并执行请求。
这似乎很直截了当。最初让你困惑的是,你以为原始请求是经过加密传送的,但实际上,HMAC方法所做的一切只是使用只有客户端和服务器才知道的私钥将参数生成为一些独特的校验和(哈希)。
随后,客户端将这个校验和及原始参数和值发给服务器,然后服务器复核校验和(哈希)以确定它接受客户端所发的请求。
因为根据假设,只有在客户端和服务器知道私钥,我们假设如果他们的哈希匹配,那么它们会互相信任,以至服务器随即正常处理这个请求。
你知道在现实中,这就相当于某人过来对你说:“Jimmy让我告诉你把钱给Johnny”,但你不知道这个人是谁,所以你要伸出手去试探他,看看他是否知道这个秘密握手。
如果三次握手证明无误,则通讯继续进行,否则中断通讯。.
你明白了大概是怎么回事,但还是想会不会还有更好的方法呢?还好,有tarsnap网站 tarsnap帮你答疑解惑。看看亚马逊是如何解决签名认证问题的Amazon screwed this up with Signature Version 1.
看完了亚马逊的web service是如何鉴权的,re-read how Amazon Web Services does authentication 讲的确实有道理,整个流程如下:
[客户端]在调用REST API之前,首先将待发送消息体打包, combine a bunch of unique data together(websevice端将要接收的数据)
[客户端]用系统分派的密钥使用哈希(最好是HMAC-SHA1 or SHA256 ) 加密(第一步的数据).
[客户端]向服务器发送数据:
用户身份认证信息例如,用户ID,客户ID或是其他能别用户身份的信息。这是公共API,大家都能访问的到(自然也包括了那些居心叵测的访问者)系统仅仅需要这部分信息来区分发信人而不考虑可靠与否(当然可以通过HMAC来判断可靠性).
发送生成的HMAC码.
发送消息体(属性名和属性值),如果是私有信息需要加密,像是(“mode=start&number=4&order=desc”或其他不重要的信息)直接发送即可.
(可选项)避免重放攻击 “replay attacks” o的唯一办法就是加上时间戳。在使用HMAC算法时加入时间戳,这样系统就能依据一定的条件去验证是否有重放的请求并拒绝.
[服务器端]接收客户端发来的消息.
[服务器端] (参看可选项)检查接收时间和发送时间的间隔是否在允许范围内(5-15分)以避免重放攻击replay attacks.
提示: 确保待检对象的时区无误daylight savings time
更新: 最近得到的结论就是直接使用UTC时区而无需考虑DST的问题 use UTC time .
[服务器端]使用发送请求中用户信息(比如.API值)从数据库检索出对应的私匙.
[服务器端]
跟客户端相同,先将消息体打包然后用刚得到的私匙加密(生成HMAC)消息体.
(参看可选项) 如果你使用了加入时间戳的方式避免重放攻击,请确保服务端生成的加密信息中拥有和客户端相同的时间戳信息以避免中间人攻击man-in-the-middle attack.
[服务器端] 就像在客户端一样,使用HMAC哈希加密刚才的信息体.
[服务器端]
将服务器端刚生成的哈希与客户端的对比。如果一致,则通讯继续;否则,拒绝请求!
提示: 在打包消息体的时候一定要考虑清楚,如果像亚马逊进行签名版本1中信息识别那样会面临哈希冲突的问题 open yourself up to hash-collisions! (建议:将整个包含URL的请求加密即可!)
特别提示:私匙绝对不能在通讯过程中传递,它仅仅用来生成HMAC,服务器端会自动查询出它的私匙并重新生成自己的HMAC.我来翻译公匙仅仅用来区分不同的用户,即使被破解也无所谓。因为此时的消息无需判断其可靠性,服务端和客户端还是要通过私匙来加密(比如,前缀、后缀,倍数等等)
10/13/11更新:Chris最近发现 pointed out 如果在HMAC计算中加入了URI或是HTTP请求/回复,攻击者更易通过更改末端或是HTTP方法来搞破坏。比如,在HTTP POST方法中将/issue/create改成/user/delete。多谢Chris的提醒!
总结
经过几天的煎熬,你终于设计出了一个安全的API访问机制,感到很骄傲吧。更值得骄傲的是,通过这种设计方式很好的避开了另一种常见的API访问危机:劫持 side-jacking.
会话劫持是通过嗅探出的会话ID来破解短时效的操作数(比如,1小时内).但采用上面的设计就很好的避免了这一点,因为通讯过程中往来操作均被校验过,根本无需生成会话ID.
兴奋啊.
但是你慢慢的意识到在某些时候确实还是得使用OAuth,have to implement OAuth, 也许就是还未成熟的 isn’t quite ready yet OAuth2.0吧 OAuth 2.0 support
我也刚接触RESTful架构没多长时间,只是关注了一下客户端的包文件部分 client-side libraries.
如果上文中遗漏了什么,请帮忙之处,我会尽快修订。如果您对上文中有任何的意见和建议,请留下您的宝贵意见。
或者,也可以给我发邮件,一起讨论一下!
留观室(待解决问题)
<此处已删除,只要你使用UTC时区 using UTC time 就不会有时差问题了,所以我的提议也没什么意义了.>
题外话
如果是为Twitter这种模式开发API呢,那会有成千上万台手机上安装被植入公匙私匙的应用private keys embedded in the app。
在设备上,用户很可能破解出应用中的私匙,这不是很危险么?
是的,是很危险。
那该怎么办呢?
按照Twitter的说法,这种情况无法避免。应用需要它的私匙(它们称之为密匙),那也意味着在安全方面要做出妥协。
目前能做的就是生成应用级别的私匙而非用户级别的。那样的话,如果应用被黑了可以禁用直到发布包含新生成私匙的新版本应用。
如果刚更新的私匙又被黑了怎么办?
对,这很有可能。你可以自己再加密原有的私匙,或是祈求自己的应用不会再被黑掉.
无所谓,你甚至可以再加密一次私匙但至少这样你就能在凶险的网络环境中使用自己的新应用了。这总比账户被锁,应用无法使用要好得多.
更新#1:在评论中有很多很好的建议和观点,我在这引述几条:
使用nonce “nonce”来避开重放攻击 (每次都采用不同的token)并实现idempotentcy implement idempotentcy in your API.
上面的算法跟双数据模式的OAutho1.0有95%的相似“95% similar to ‘two-legged’ OAuth 1.0“,所以还是看一下OAuth的说明为妙.
通过SSL发送消息可以减少复杂的安全性访问设计sending all traffic to go over SSL (HTTPS)!
更新 #2: 我又看了一下双数据模式的OAuth,正如大家指出的,确实跟上面的过程很像。使用OAuth的唯一好处就是有很多现成的客户端库文件 OAuth client libraries
关于OAuth需要注意的地方:
OAuth的说明文档super-specific 指出了如何在HMAC计算中完成转码,排序并打包(在OAuth叫“方法标识“)
在OAuth使用HMAC-SHA1加密时,会要求发送端提供一个简述随机数。并以此简述随机数和时间戳来确保请求的唯一性(潜在的“重放攻击” )原理上,你可以在数据存储后失效这些数据,但最好还是把它们保存在文件中以便后用.
简述随机数可以公开。它就是在关联某个时间戳时附加的一些字段。它们的关系就好像一个指纹来确保“12:22pm 收到一条包含HdjS872djas83的消息请求 “这就杜绝了使用中间人重放攻击的可能,因为所有HMAC加密算法中都同时含有简述随机数和时间戳。如果受到攻击,它会告诉你”这条消息两小时前处理过了,你想干什么呢?!”
这些所有的数据都以逗号分隔并塞入很大的鉴权HTTP包头中,而并非通过GET方法传值.
这确实是双数据模式的OAuth的过人之处。HMAC计算时需要的请求数据无需改变就原封不动的放在那里,发送过程中的简述随机数和时间戳也一样就连发送请求中的参数也一样.
『陆』 如何通过Java客户端程序通过rest接口访问并上传文件(文档)到web服务器
图片目录不在项目路径下,直接通过HTTP访问不到,如果你硬是要这么访问,你可以自己写一个Servlet,通过流的方式输出,注意要吧Content-Type设置正确
『柒』 内部系统可以做成通过REST API的方式调用吗
想要为开发工程师们开发一个既能满足REST约束条件和原则又不像OAuth OAuth 那样复杂 the complexity ,仅仅使用简单的传值语句或者其它简单但同样安全的方法就能实现的web API?
聪明人会有聪明的想法…
问题
直接通过HTTP literally passing the credentials over HTTP以文本方式传输鉴权信息可能会被破译; 尤其在 Gawker incident, 再以文本或是弱加密的方式传输鉴权信息是非常不安全的做法 weakly-hashed anything is usually a bad idea.
即便是使用哈希加密后还是很有可能被人根据彩虹表 Rainbow Table破译出与用户名匹配的密码(个别案例)
这可该怎么办,真是郁闷…
也许你又会想到很多公共的API popular public APIs在请求中采用双数据的模式:一个公有值一个(最好是有)只有属主能访问的私有值。
”还是有点不对!”这不跟原来(用户名密码模式)文本模式差不多么,还是可能会被(嗅探器)破译。
这时候你可能准备放弃并采用OAuth模式了,但仍坚信必有某种简单方法能实现公用webAPI安全访问私有鉴权信息。
解决方案
连续2天的Peyote实验后(你可能会找到更好的放松办法),结论终于呈现在你眼前:Amazon是拥有最大的、使用最多的在线网络API的网络服务之一,并且根本不支持OAuth!
经过一个下午长时间的狂想之后,你最终败下阵来,并看到Amazon是如何保持API请求安全的。你不清楚为什么,但读完整页关于如何为Amazon网络服务装配一个请求后,你依然觉得不完全合理。这个“签名”和什么连在一起?代码示例中的“data”参数是什么?这样,你会继续查找关于“安全API设计”的文章。。。
当遇到其他人问同样的问题时,你看到一些指出"HMAC"或其他事物的优秀回复,但还是不太确定。
你找到其他鼓励你使用“HMAC”的文章并且你正H-FINE地使用它,如果有人将“HMAC”解释成简明的H_ENGLISH的话。
你的确偶遇了一个有道理的蒸馏的基本概念,它是这样一简明的英语描述的:
一个服务器和客户端知道一个公钥和一个私钥;只有服务器和客户端知道私钥,但每个人都知道公钥。。。但不关心别人所知道的。
一个客户端生成一个唯一的HMAC(哈希)表示它到服务器的请求。通过把请求数据(参数和值或XML/JSON或任何它计划发送的数据)以及请求数据的散列blob和私钥结合来实现。
客户端随后将这个HASH以及所有它将要发送的参数和值一并发给服务器。
服务器接到请求,并使用与客户端相同的方式重新生成自己独有的基于提交值的HMAC(哈希)。
然后,服务器比较这两个HMAC,如果相同,服务器就信任这个客户端并执行请求。
这似乎很直截了当。最初让你困惑的是,你以为原始请求是经过加密传送的,但实际上,HMAC方法所做的一切只是使用只有客户端和服务器才知道的私钥将参数生成为一些独特的校验和(哈希)。
随后,客户端将这个校验和及原始参数和值发给服务器,然后服务器复核校验和(哈希)以确定它接受客户端所发的请求。
因为根据假设,只有在客户端和服务器知道私钥,我们假设如果他们的哈希匹配,那么它们会互相信任,以至服务器随即正常处理这个请求。
你知道在现实中,这就相当于某人过来对你说:“Jimmy让我告诉你把钱给Johnny”,但你不知道这个人是谁,所以你要伸出手去试探他,看看他是否知道这个秘密握手。
如果三次握手证明无误,则通讯继续进行,否则中断通讯。.
你明白了大概是怎么回事,但还是想会不会还有更好的方法呢?还好,有tarsnap网站 tarsnap帮你答疑解惑。看看亚马逊是如何解决签名认证问题的Amazon screwed this up with Signature Version 1.
看完了亚马逊的web service是如何鉴权的,re-read how Amazon Web Services does authentication 讲的确实有道理,整个流程如下:
[客户端]在调用REST API之前,首先将待发送消息体打包, combine a bunch of unique data together(websevice端将要接收的数据)
[客户端]用系统分派的密钥使用哈希(最好是HMAC-SHA1 or SHA256 ) 加密(第一步的数据).
[客户端]向服务器发送数据:
用户身份认证信息例如,用户ID,客户ID或是其他能别用户身份的信息。这是公共API,大家都能访问的到(自然也包括了那些居心叵测的访问者)系统仅仅需要这部分信息来区分发信人而不考虑可靠与否(当然可以通过HMAC来判断可靠性).
发送生成的HMAC码.
发送消息体(属性名和属性值),如果是私有信息需要加密,像是(“mode=start&number=4&order=desc”或其他不重要的信息)直接发送即可.
(可选项)避免重放攻击 “replay attacks” o的唯一办法就是加上时间戳。在使用HMAC算法时加入时间戳,这样系统就能依据一定的条件去验证是否有重放的请求并拒绝.
[服务器端]接收客户端发来的消息.
[服务器端] (参看可选项)检查接收时间和发送时间的间隔是否在允许范围内(5-15分)以避免重放攻击replay attacks.
提示: 确保待检对象的时区无误daylight savings time
更新: 最近得到的结论就是直接使用UTC时区而无需考虑DST的问题 use UTC time .
[服务器端]使用发送请求中用户信息(比如.API值)从数据库检索出对应的私匙.
[服务器端] 跟客户端相同,先将消息体打包然后用刚得到的私匙加密(生成HMAC)消息体.
(参看可选项) 如果你使用了加入时间戳的方式避免重放攻击,请确保服务端生成的加密信息中拥有和客户端相同的时间戳信息以避免中间人攻击man-in-the-middle attack.
[服务器端] 就像在客户端一样,使用HMAC哈希加密刚才的信息体.
[服务器端] 将服务器端刚生成的哈希与客户端的对比。如果一致,则通讯继续;否则,拒绝请求!
提示: 在打包消息体的时候一定要考虑清楚,如果像亚马逊进行签名版本1中信息识别那样会面临哈希冲突的问题 open yourself up to hash-collisions! (建议:将整个包含URL的请求加密即可!)
特别提示:私匙绝对不能在通讯过程中传递,它仅仅用来生成HMAC,服务器端会自动查询出它的私匙并重新生成自己的HMAC.我来翻译公匙仅仅用来区分不同的用户,即使被破解也无所谓。因为此时的消息无需判断其可靠性,服务端和客户端还是要通过私匙来加密(比如,前缀、后缀,倍数等等)
10/13/11更新:Chris最近发现 pointed out 如果在HMAC计算中加入了URI或是HTTP请求/回复,攻击者更易通过更改末端或是HTTP方法来搞破坏。比如,在HTTP POST方法中将/issue/create改成/user/delete。
『捌』 怎样保证到服务器的 REST 请求是由自己的 APP 发起的
accesstoken是一种方式,早期简单点的有appid,appkey方式,复杂一点的可以使用RSA加密。服务器和APP直接大部分通过接口调用,比如用户列表。/user/list/post到/user/list/里面有加密的一个token这个是验证是不是一个合法的访问者。而且现在很多开发平台比如 。
『玖』 如何使用JFINAL搭建REST接口服务器
2.7 configHandler(..)
此方法用来配置JFinal的Handler,如下代码配置了名为ResourceHandler的处理器,Handler可以接管所有web请求,并对应用拥有完全的控制权,可以很方便地实现更高层的功能性扩展。
public void configHandler(Handlers me) { me.add(new ResourceHandler());}