目录
一、RESTful API——(Resource) REpresentational State Transfer(表层状态转移)
一、RESTful API——(Resource) REpresentational State Transfer(表层状态转移)
简言之,REST描述的是在网络中client和server的一种交互形式。
1.Resource:资源,即数据。
要让一个资源可以被识别,需要有个唯一标识,在Web中这个唯一标识就是URI(Uniform Resource Identifier)。
- URI既可以看成是资源的地址,也可以看成是资源的名称。
- URI的设计应该遵循可寻址性原则,具有自描述性,需要在形式上给人直觉上的关联。
- 使用/来表示资源的层级关系,使用?用来过滤资源。
例如:
https://github.com/git https://github.com/git/git
https://github.com/git/git/blob/master/block-sha1/sha1.h
https://github.com/git/git/commit/e3af72cdafab5993d18fae056f87e1d675913d08
https://github.com/git/git/pulls
2.Representational
某种表现形式,比如用JSON,XML,JPEG等。
3.State Transfer
状态变化,通过HTTP动词实现(如Get、Post)。
二、Json(org.json.JSONObject)
1.JSON简介
Xml:可扩展标记语言(Extensible Markup Language,简称:XML)是一种标记语言。 标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。
我们所写的布局文件就是通过xml写的。
JSON(JavaScript Object Notation,JavaScript对象表示法。)是一种轻量级的数据交换语言,JSON是JavaScript的一个子集,但JSON是独立于语言的文本格式,即JSON 数据格式与语言无关,当前很多编程语言都支持 JSON 格式数据的生成和解析。
JSON支持多种数据类型:
2.JSONObject
- 生成Json字符串
- 解析Json
2.1 生成JSON字符串
2.2 解析JSON对象
现实生活中,我们更多的时候是解析网络中传回来的JSON数据。网络中的数据在服务端大部分都是用字符串来存储JSON。
JSONObject提供了get方法获取各种类型的JSON值。
上图所示,当获取一个不存在与JSON数据中的值时,如果使用get方法会报错。
上图所示,如果使用opt获取JSON数据,当该值不存在JSON数据中时,提供了一个fallback默认值,因此不会报错。
三、Android中的Gson
1.简介
是由Google提供的,相比于Json繁琐的创建对象,然后不停地put,Gson更简单易用。
开源地址:
2.Gson使用
2.1 生成Json对象
①Gson是一个第三方库,需要引入。
创建一个Peple对象
然后创建一个Gson对象,调用toJson方法即可生成一个json字符串。
2.2 解析JSON
People里面再套一个People
可以看到,当Peole里面嵌套了People对象,仍然可以解析。
2.3 解析多个Json对象
四、Retrofit
1.简介
开源地址:
GitHub - square/retrofit: A type-safe HTTP client for Android and the JVM
2.用法
2.1 GET方法使用
在Manifest中进行网络权限的注册。
网上的开源免费api:玩Android - wanandroid.com - 每日推荐优质文章
文章数据:
使用retrofit创建一个api对象,然后调用getArticles方法,将返回的文章入队。
使用retrofit拿到response.body.articles可以直接获得文章对象,内部自动帮我们转换成了Gson,不需要我们自己写。
模拟器显示文章:
2.2 POST方法的使用
实现注册功能