这是上一篇文章中的简单使用Retrofit访问静态类型接口   但很多情况下,接口地址中的部分内容是会静态变化的,比如 GET http://example.com/{page}/get_data.json 在这个接口中{page}代表页数,传入不同的页数,服务器返回不同的数据,这种地址对应到Retrofit中应该怎么写?
在@GET注解中使用{page}占位符,然后又在getData()方法中添加了一个page参数,并使用@Page(“page”)注解来声明这个参数,这样当调用getData()方法发起请求的时候,Retrofit会自动将page参数的值替换到占位符中组成合法的请求地址 
另外,还有的情况是,服务器会要求我们传入一系列参数,示例如下  这是一种标准的带参数GET请求的格式。接口地址的最后使用问号来连接参数部分,每个参数都是一个使用等号连接的键值对,多个参数之间使用“&”符号进行分隔。那么很显然,在上述地址中,服务器要求我们传入user和token这两个参数的值。对于这种格式的服务器接口,我们可以使用刚才所学的@Path注解的方式来解决,但是这样会有些麻烦,Retrofit针对这种带参数的GET请求,专门提供了一种语法支持:  这里在getData()方法中添加了user和token这两个参数,并使用@Query注解对它们进行声明。这样当发起网络请求的时候,Retrofit就会自动按照带参数GET请求的格式将这两个参数构建到请求地址当中。
GET请求用于从服务器获取数据,POST请求用于向服务器提交数据,PUT和PATCH请求用于修改服务器上的数据,DELETE请求用于删除服务器上的数据。
Retrofit对所有常用的HTTP请求类型都进行了支持,使用@GET、@POST、@PUT、@PATCH、@DELETE注解,就可以让Retrofit发出相应类型的请求。
下面给出删除示例 服务器接口地址   由于POST、PUT 、PATCH、DELETE这几种请求类型与GET请求不同,它们更多是用于操作服务器上的数据,而不是获取服务器上的数据,所以通常它们对于服务器响应的数据并不关心。这个时候就可以使用ResponseBody,表示Retrofit能够接收任意类型的响应数据,并且不会对响应数据进行解析
|