机关类型安全的.NET标准REST库refit

public interface IGitHubApi
{
    [Get("/users/{user}")]
    Task<User> GetUser(string user);
}
3、请求体(Request Body)

通过[Body]特性能够表明一个对象作为请求体发送到服务器。

[Post("/users/new")]
Task CreateUser([Body] User user);

对象将被RestService 使用对应的转换器转换为字符串或者字节流提交到服务器。
  • 支撑 URL 参数替换和查询参数
  • 再次来到结果转换为C#对象(再次回到结果可以为JSON)
  • 补助 Multipart请求和文件上传
2、URL处理

伸手的URL可以遵照函数参数动态更新。一个可替换的区块为用 {}
包围的字符串,而函数参数必需用 @``AliasAs特性讲明,并且特性的参数为
相同的字符串

[Get("/group/{id}/users")]//注意 字符串id
Task<List<User>> GroupList([AliasAs("id")] int groupId); //注意 AliasAs特性的参数要和前面的字符串一样 id

还支持查询参数

[Get("/group/{id}/users")]
Task<List<User>> GroupList([AliasAs("id")] int groupId, [AliasAs("sort")] string sortOrder);

GroupList(4, "desc");
>>> "/group/4/users?sort=desc"
4、FORM ENCODED AND MULTIPART 表单和Multipart

函数也可以注明为发送表单数据和multipart 数据

5、服务器结果转换为C# 对象

使用RestService的转换器把HTTP请求结果(默认为JSON)转换为C#对象,C#对象通过函数重临值指定

6、添加请求头

俺们得以由此[Headers]来添加请求头,匡助动态的乞求头。

refit是不行强大的,本文通过丰硕的演示和对源码的挖掘,向我们来得了
refit自身强硬的效果以及扩充性

var gitHubApi = RestService.For<IGitHubApi>(https://api.github.com);
var octocat = await gitHubApi.GetUser("octocat");

下一场通过 RestService类来生成一个
IGitHubApi接口的兑现,使用HttpClient 调用;

概念方面的一个REST API接口。 该接口定义了一个函数
GetUser,该函数会通过HTTP
GET请求去拜访服务器的/users/{user}途径并把重返的结果封装为User POCO
对象回来。

其间URL路径中的{user}的值为GetUser函数中的参数 user的取值。

切切实进行使文档

函数和函数参数上的性状注解了请求形式

从上边的言传身教可以见到, refit使用特性来声称HTTP请求

1、请求模式

各种函数都必须含有
HTTP特性来表明请求模式和伸手的URL路径。类库中有5个HTTP注明:GET,
POST,
PUT,DELETEHEAD。声明中的参数为呼吁的相对URL路径

[Get("/users/list")]

在URL路径中也得以指定URL参数:

[Get("/users/list?sort=desc")]

SCOTT HANSELMAN
博客上来看一个好东西《Exploring refit, an automatic type-safe REST
library for .NET
Standard
》,他援引了一个.NET正规1.4
的自发性类型安全的REST库refit
refit
类似于Java的Retrofit,是一套RESTful架构的.NET客户端实现,基于特性,提供把REST
API再次来到的数额转发为(Plain Ordinary C# Object,简单C#目标),POCO to
JSON,网络请求(POST,GET,PUT,DELETE等)封装,内部封装使用HttpClient,前者专注于接口的卷入,后者专注于网络请求的便捷,二者分工协作。大家的应用程序通过
refit伸手网络,实际上是行使 refit接口层封装请求参数、Header、Url
等消息,之后由
HttpClient成功后续的央浼操作,在服务端重返数据未来,HttpClient将原始的结果提交
refit,后者依据用户的急需对结果举办分析的经过。

例如:

相关文章