`
sunwenpeng
  • 浏览: 10358 次
社区版块
存档分类
最新评论

活动通中的http

阅读更多
  12月份用rails做的活动通的项目,不仅仅像之前做的party-bid那样,只关心应用的功能,只是一个手机上的应用或网站而已。它涉及第二方(服务器端),包括网页端用户的注册、登陆、退出,手机端(客户端)的登陆、查看相应用户的信息、向服务器端上传同步数据,即客户端和服务器端的数据交互,这就涉及到了http服务。
  HTTP即超文本传输协议,到底是什么?以目前我的理解:
  1、干什么用的?
  我觉得的,就是在客户端(包括网页端和手机端)和服务器之前,或者是浏览器和服务器之间,或者是两个应用之间传输数据所用的一种提供的特定的协议或服务。
  刚开始我做活动通的卡的时候,并不知道要用到这个,只是按照rails的套路做网页端的登陆退出注册什么的,这时用户的信息就需要储存在特定的位置,就是要有个数据库来存储,这个数据库用的是默认的sqlite3,也创建、用的是rails自带的,当时我理解是,这个数据库和服务器端就绑定到一起了。当服务器对数据进行操作时就知道往哪查找、更新、新增什么的了。后来做到手机上party-bid客户端需要往这rails程序上上传同步数据的那张卡时,意识到不只是在网页上,就是当时做的rails程序上对数据操作了,这是两个不同的应用,他们的载体也会不同=>一个手机、一个电脑服务器。那数据怎么传?怎么获取?这就用到了http。http就是干这个用的
  2、怎么用?
  刚才说到做到手机同步数据那张卡了,http可以把手机上party-bid的数据,就是那些localStorage的东西发到服务器上存起来。那怎么发数据呢?是不是就随意发就可以,任何东西发过去,即任意数据格式都可以么?对面怎么接受?这些都是怎么用http具体的问题。我觉得吧,这是两个应用之间的交互,就像两个人之间交流一样,我要想跟你说话,总得打个招呼吧,我要给你东西,就要使用“递给”你这个动作吧。http请求得到数据用的是get,如果是发送数据就是post,如果是删除数据就是delete。这几个就应该是http发送的request请求。
  在angular-js框架下发送数据的格式:
http{
  url:'192.168.1.123/user/..'
  mothed:post/get
  data: {'key':value,'key':value,...}
}.success(function(response/data){
}).error(function(){})

  可以看到,向服务器发送请求其实就是传过去一个url。
  这是以JSON的格式发送过去的,如果data不写成JSON的格式,只能是一个数据(一个对象或一个数组或一个值),默认的key是'_json'。
  如果是get请求,就不用发送数据了。通常是网页端向服务器端get个html返回到浏览器,由浏览器解析成网页显示出来。
  如果是post请求的话,服务器端就需要使用一定的方法来处理这个过程,比如它发送过啦的数据要不要接受?party-bid手机端用户登录发送验证请求,如果不是party-bid客户端发送的请求是不是也要验证?手机客户端用户向服务器发送数据更新数据库数据,那不登陆的用户,非法用户也通过一定手段发送数据去更新数据库,服务器是不是也要受理?这又涉及到信任机制的问题(token)。
  服务器使用一定的方法来接受发送到本地的数据,那到底服务器有没有接收到数据,接收到的数据有没有处理,需要服务器给出回应,活动通rails中使用的是:
  respond_to do |format| 
     render {json=>data}
  end 

  在手机客户端使用http都是在controller使用的,在angular-js中可以在controller中引入$http服务,可是在其他js文件中我尝试http服务,需要注入http服务的方法找了几个都没有成功。
  感觉angular-js中的这种http服务与经常说的jquery的ajax服务很像,由于我目前对ajax还不是很了解,只有在以后学习总结了。
  觉得http在网站web中很重要,有点像model中数据操作。


分享到:
评论
1 楼 zhangfortune 2013-12-30  
想知道服务器处理过程。可以去了解JSP,他会让你理解的更透彻。Rails把一些内容给做好了。
这条语句: render {json=>data} ,貌似不是这样写。

相关推荐

Global site tag (gtag.js) - Google Analytics