白羽
2018-08-13
来源 :网络
阅读 1531
评论 0
摘要:本文将带你了解WEBAPP开发之webApp书城整站开发所得(一),希望本文对大家学WEBAPP有所帮助。
本文将带你了解WEBAPP开发之webApp书城整站开发所得(一),希望本文对大家学WEBAPP有所帮助。
//来自service/service.js:exports.get_search_data=function(start,end,keyword){//因为请求http接口是异步的,所有会导致get_search_data//是异步的,我们不能直接返回,直接返回会有问题returnfunction(cb){//所以我们需要返回一个异步函数去做这件事件varhttp=require('http');//用来发送请求varqs=require('querystring');//把obj对象转化为http查询参数vardata={//接受的参数s:keyword,start:start,end:end};varcontent=qs.stringify(data);//转化为查询字符串varhttp_request={//指定要访问的地址hostname:'doshu.xiaomi.com',port:80,path:'/store/v0/lib/query/onebox?'+content};//上面组装好这些参数后,我们把请求发送出去varreq_obj=http.request(http_request,function(_res){//(请求地址,回调(response响应对象))varcontent='';//返回的内容_res.setEncoding('utf8');//设定返回的数据格式限定_res.on('data',function(chunk){//当接受到数据的时候触发data事件,返回的数据是一段一段的chunkcontent+=chunk;});_res.on('end',function(){cb(null,content);//把数据传出去第一个参数为错误代码});//数据接受完后触发end事件});req_obj.on('error',function(){});//有可能响应出错req_obj.end();//发送请求,这时将进入上面的回调}};//来自app.jsapp.use(controller.get('/ajax/search',function*(){varqs=require('querystring');varqueryObj=qs.parse(this.req._parsedUrl.query);//反转为对象varkeyword=queryObj.keyword;varstart=queryObj.start;varend=queryObj.end;this.body=yieldservice.get_search_data(start,end,keyword);}));为什么要对接口进行转发?(不在前端直接访问xiaomi获取数据,而是发给node,由node去访问xiaomi的数据再给前端)通过nodejs把接口再转发一次与直接使用后端接口相比,优缺点如何?实际开发为何采用这种方式?dushu.xiaomi.com:90/store/v0/lib/query/onebox? vs 127.0.0.1:3000/ajax/search?感觉路径更清晰,而且接口的域名也统一了。但是查询的时候要多走一步。答案:如果业务层接口需要聚合多个数据源和不同业务不同域的服务怎么办?Node层最大的价值在于取代了web接入层
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之WebApp频道!
喜欢 | 0
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号