本文将主要从angularjs下Resource与RESTful 接口初探,和调试工具postman的使用介绍这两个方面,和大家分享方便开发与维护的技巧工具。如有不当之处,还请交流指正。

技巧1:减少开发与运维难度,angularjs下Resource与RESTful 接口初探

现代的项目中前端页面展现的数据多数是动态变化的,展示数据会涉及到网络请求,从后台拿取数据,前端进行展示。最初的是ajax 请求,它的步骤原理如下:

创建过程如下步骤:

1.创建一个XMLHttpRequest对象。(不同的浏览器,方法不一样,可以检查浏览器支持情况)
2.使用 XMLHttpRequest 对象的 open() 和 send() 方法,建立与服务器的链接并发送请求。
3.请求被发送到服务器时,我们需要执行一些基于响应的任务。就是回调函数。每当 readyState 改变时,就会触发 onreadystatechange 事件。

readyState(5个状态) 属性存有 XMLHttpRequest 的状态信息。根据readyState和status的值,使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性,获得来自服务器的响应。

这个过程还是比较繁琐,后来就出现了jQuery, 极大地简化了JavaScript 编程.jQueryget() 和 post() 方法用于通过 HTTP GET 或 POST 请求从服务器请求数据,调用形式如:$.get(URL,callback) 或者$.post(URL,data,callback);

angularjs是一款优秀的前端JS框架,已经被用于Google的多款产品当中。AngularJS有着诸多特性,最为核心的是:MVW(Model-View-Whatever)、模块化、自动化双向数据绑定、语义化标签、依赖注入等等。而对于网络请求,$http几乎是所有ng开发中,都会用到的服务. 如果接口不是很多,直接使用$resource服务即可,但是对于很多的后端请求接口,那就很有必要使用ngResource服务.该服务创建资源对象的工厂,该资源对象允许你与RESTful服务端数据资源进行交互。返回的资源对象拥有提供了高层行为的动作方法,从而无需与底层的$http服务进行交互。具体调用如下:

$resource(url[,paramDefaults][, actions]);

返回一个资源“类”对象。该对象包含默认资源动作的方法,和可选的自定义的扩展动作。默认集合包含以下动作:

{ 'get': {method:'GET'},'save': {method:'POST'}, 'query': {method:'GET', isArray:true}, 'remove': {method:'DELETE'}, 'delete':{method:'DELETE'} };

在实际的项目开发中还可以进行自定义的拓展,例如:

functionresourceConfig($resourceProvider) {$resourceProvider.defaults.actions= {saveArray: {method: 'POST',isArray: true},modify: {method: 'PATCH'},create: {method: 'POST'},save: {method: 'POST'},get: {method: 'GET'},query: {method: 'GET',isArray: true},update: {method: 'PUT'},delete: {method: 'DELETE'},verify: {method: 'POST'}};}

调用这些方法将以特定的http方法,目标和参数调用ng.$http。数据从服务器返回后,该对象将是该资源类的一个实例。save,remove,delete动作($前缀)可作为该对象的方法使用。这允许你很容易地对服务器端数据进行CRUD操作,如:

app.factory('Persons',['$resource', function($resource) {return$resource('/person/:id', null, {update: { method:'PUT' }});}]); var person =Persons.get({ id: 3}),$id = person.id;person.content = 'yyy';Persons.update({ id:$id},person );

类对象或实例对象中的动作方法可以用以下参数进行调用:

HTTP GET “类”动作:Resource.action([parameters], [success], [error])  //
eg:Person.update({id: xxx});

non-GET “类”动作:Resource.action([parameters], postData, [success],
[error])

non-GET 实例动作: instance.$action([parameters],[success], [error])
//eg:person.$update()

Success回调以(value, responseHeaders)参数调用。Error回调以(httpResponse)参数回调。

那么接下来问题来了,什么是RESTful Api设计?

REST(表征性状态传输,Representational State Transfer)是RoyFielding博士在2000年他的博士论文中提出来的一种软件架构风格。RESTful风格的设计不仅具有更好的可读性(Human Readable),而且易于做缓存以及服务器扩展。REST风格体现在URL设计上:

每个URL对应一个资源

对资源的不同操作对应于HTTP的不同方法

资源表现形式(representation)通过Accept和Content-Type指定

对资源的操作有如下:

GET(SELECT):从服务器取出资源(一项或多项)。

POST(CREATE):在服务器新建一个资源。

PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。

PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。

DELETE(DELETE):从服务器删除资源。

综上所述,个人以为无论是ngresouce的使用还是Restful api 设计风格的使用,目的就是提高复用性,资源请求统一配置处理,提高代码可读性与服务的拓展性,减少开发与运维难度。

技巧2:跟踪网页请求,用好调试工具postman

用户在开发或者调试网络程序,需要一些方法来跟踪网页请求,Postman在发送网络HTTP请求方面可以说是Chrome插件类产品中的代表产品之一,使用十分方便,如下是其主界面 :

这里着重说明下post 方法的使用:

请求头是根据请求参数的形式自动生成的,

请求头中的Content-Type与请求参数的格式之间是有关联关系,比如:

1.表单提交form-data,x-www-form-urlencoded

2.json,xml 等提交,可以在右边设置请求头属性

3.二进制文件提交


有时候写接口文档需要使用到curl语句,或者要求有莫种语言的示例等,Postman也提供了相应的支持.如下:

选择面板中标的12 后会出现这个面板,其中包含了C 、C# 、Java、 Go 、Python 等主流编程和脚本语言,十分方便.

其他的功能不在此一一列举,更多有关提高开发效率,与开发调试技巧欢迎关注达观数据多多交流。

参考资料:
1. http://www.ruanyifeng.com/blo...

2.https://learning.getpostman.c...

关于作者

郭权:达观数据web前端工程师,负责达观数据前端产品的开发、维护、优化,升级等具体工作。对数据的展示形式,后端数据交互处理有一定的研究和浓厚的兴趣。

达观数据郭权:用好ngResource和postman,提高你的开发调试效率相关推荐

  1. 达观数据:用好学习排序 (LTR) ,资讯信息流推荐效果翻倍

    序言 达观数据是一家基于文本语义理解为企业提供自动抽取.审核.纠错.推荐.搜索.写作等系统服务的人工智能企业,其中在推荐场景上我们也服务了很多客户企业,客户在要求推荐服务稳定.需求响应及时的基础上,对 ...

  2. 点击模型:达观数据提升算法精度的利器

    在搜索.推荐.广告引擎中,系统会通过复杂算法生成一个最终的结果列表.用户在看到这个结果列表时,未必都会对排序满意,比如有时觉得排序的顺序有问题,或者发现一些不符合喜好的item.如果从算法层面来调优, ...

  3. 达观数据:文本大数据的机器学习自动分类方法

    随着互联网技术的迅速发展与普及,如何对浩如烟海的数据进行分类.组织和管理,已经成为一个具有重要用途的研究课题.而在这些数据中,文本数据又是数量最大的一类.文本分类是指在给定分类体系下,根据文本内容自动 ...

  4. 达观数据签约全国首家银行系基金公司工银瑞信

    近日,达观数据签约全国第一家由国有商业银行直接发起设立并控股的合资基金管理公司--工银瑞信. 工银瑞信:国内首家商业银行设立的合资基金管理公司 工银瑞信成立于2005年6月,是国内首家由商业银行『中国 ...

  5. 达观数据搜索引擎排序实践

    前言 随着互联网的深入发展,人类已然进入大数据时代.如何在浩瀚的数据海洋里高速有效的获取有价值的信息,正是促使大数据技术具备走向众多企业的潜力.搜索引擎作为获取信息的有效入口,已然经历了20多年的发展 ...

  6. 达观数据:kubernetes简介和实战

    在本文中,我们从技术细节上对kubernetes进行简单运用介绍,利用一些yaml脚本层面上实例告诉大家kubernetes基本概念.Kubernetes以及它呈现出的编程范式值得你去使用和整合到自己 ...

  7. 达观数据推荐算法实现:协同过滤之item embedding

    推荐系统本质是在用户需求不明确的情况下,解决信息过载的问题,联系用户和信息,一方面帮助用户发现对自己有价值的信息,另一方面让信息能够展现在对它感兴趣的用户面前,从而实现信息消费者和信息生产者的双赢(这 ...

  8. 达观数据于敬:个性化推荐系统实践

    达观数据于敬:个性化推荐系统实践 在DT(data technology)时代,网上购物.观看视频.聆听音乐.阅读新闻等各个领域无不充斥着各种推荐,个性化推荐已经完全融入人们的日常生活当中.个性化推荐 ...

  9. 解决流程自动化“最后一公里问题”,达观数据发布智能 RPA

    2019 年7月 26 日,业界领先的人工智能企业达观数据在北京召开"达道至简"为主题的产品发布会,正式推出国内首款自主研发集OCR(光学字符识别)与 NLP(自然语言处理)于一体 ...

  10. 免费公开课报名 | 达观数据个性化推荐系统实践

    在人工智能浪潮之下,个性化推荐技术更是风靡业界,在金融.传媒.短视频.电商.教育等诸多领域大放异彩,影响人们生活的方方面面.不仅方便了人们获取各种各样的信息,还给企业带来了收益的大幅提升. 本次公开课 ...

最新文章

  1. HTML中单选框的设置,和提交按钮之间的组合
  2. ubuntu 新建一个root用户
  3. 设计模式原则篇:(1)单一职责原则--Single Responsibility Principle
  4. 《数据挖掘与数据化运营实战 思路、方法、技巧与应用》—— 读书笔记
  5. 怎么把分钟转化成秒_怎么利用抖音短视频引流,手把手教你如何玩转抖音流量...
  6. window覆盖导航栏
  7. 手把手带你做LiteOS的树莓派移植
  8. anaconda 设置python3为主_【windows】下Anaconda详细安装过程
  9. Focal Loss 分类问题 pytorch实现代码(续3)
  10. 手机为什么取消了内存卡?
  11. aardio + .NET 快速开发独立 EXE 程序,可防 ILSpy 反编译
  12. Latex排版—(1)基础排版
  13. windows scrip host报错代码:800A00D
  14. 二维码扫描枪对接手册
  15. 迅为《i.MX8MM开发板使用手册1.4版》大更新
  16. hcl出现“Invalid ciphertext password.”错误的解决方法
  17. Leetcode刷题笔记——剑指offer II (六)【图】
  18. 深入理解机器学习中的:目标函数,损失函数和代价函数
  19. 汽车VIN编号 有效性检查 PHP 验证算法
  20. ant man 什么意思_ant是什么意思中文翻译

热门文章

  1. 编程的未来 Java, C, Go, Swift, Dart? Uncle Bob Martin - The Future of Programming
  2. java 6 基础_java基础(6)
  3. 2021-09-1017. 电话号码的字母组合
  4. Go语言编程17课:切片,步入数组的窗口(附pdf百度云)
  5. http协议,postget请求
  6. 学计算机信息管理专业的感谢,2014年计算机信息管理专业自荐信
  7. 凸优化第六章逼近与拟合 6.4鲁棒逼近
  8. 轮廓系数的应用:kmeans聚类理论篇K的选择(轮廓系数)
  9. 算法萌新如何学好动态规划(三)
  10. 非零矩阵A可以写成某个列满秩矩阵与某个行满秩矩阵的乘积