符合rest风格的图形验证码应该是怎样的?

想在rest风格API中提供图形验证码,发现有多处问题:
1.依据rest规则,所有get操作应该不改变服务器状态,但是图形码是直接嵌入在img中使用的。如下图片代码:

<img src='/api/v1/captcha?t=13249234'/>

每次刷新,都应该重置服务器上的验证码,但如果用post,代码就会显得很诡异,请问怎么解决?
2.rest是无状态协议,而常见的captcha类库都用到了session,请问是不是要为rest api重写captcha的类库?

holdtom
浏览 721回答 6
6回答

阿晨1998

GET /api/v1/captcha/13249234 服务端路由处理好即可,可以理解为13249234就是验证码这个资源的标识符,不是验证码里面的内容

杨魅力

rest不一定是写死的规则,get改变服务器状态也不是不可以,有时候风格是风格,业务是业务。

波斯汪

用ajax发post请求 渲染img标签可行否

浮云间

REST可以实现会话的啊。POST一个请求给/session创建一个会话资源/session/1234,1234就是会话的ID。返回的HTTP 201 Created里面有session_created的数据,包括一个动态的会话口令(签名),以及新会话资源的URL。带着这个口令(签名)GET请求会话资源/session/1234/captcha,相当于获取这个会话的一个属性,也可以往里面/session/1234/里面PUT别的东西。这样就可以和CAPTCHA结合起来了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java