refseq数据库的特点_eureka如何剔除服务

refseq数据库的特点_eureka如何剔除服务在SCOTTHANSELMAN博客上看到一个好东西《Exploringrefit,anautomatictype-safeRESTlibraryfor.NETStandard》,他推荐了一个.NET标准1.4的自动类型安全的REST库refit。refit类似于Java的Retrofit,是一套RESTful架构的.NET客户端实现,基于特性,提供把REST…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

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,后者根据用户的需求对结果进行解析的过程。

例如:

public interface IGitHubApi { [Get("/users/{user}")] Task<User> GetUser(string user); }

Jetbrains全家桶1年46,售后保障稳定

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

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

然后通过 RestService 类来生成一个 IGitHubApi 接口的实现,使用HttpClient 调用;

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

从上面的示例可以看出, refit使用特性来声明HTTP请求

  • 支持 URL 参数替换和查询参数
  • 返回结果转换为C#对象(返回结果可以为JSON)
  • 支持 Multipart请求和文件上传

具体使用文档

函数和函数参数上的特性声明了请求方式

1、请求方式

每个函数都必须带有 HTTP特性来表明请求方式和请求的URL路径。类库中有5个HTTP注解:GETPOSTPUT,DELETEHEAD。注解中的参数为请求的相对URL路径

[Get("/users/list")] 

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

[Get("/users/list?sort=desc")]
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"
3、请求体(Request Body)

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

[Post("/users/new")] Task CreateUser([Body] User user);
对象将被RestService 使用对应的转换器转换为字符串或者字节流提交到服务器。
4、FORM ENCODED AND MULTIPART 表单和Multipart

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

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

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

6、添加请求头

我们可以通过[Headers]来添加请求头,支持动态的请求头。

refit是非常强大的,本文通过丰富的示例和对源码的挖掘,向大家展示了 refit自身强大的功能以及扩展性

转载于:https://www.cnblogs.com/qyq0323/p/11454106.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/226814.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • QQ空间缓存图片_QQ空间原图

    QQ空间缓存图片_QQ空间原图不知各位遇到特别长的图片时是怎么处理的?是截取符合长宽的部分做临时展示?还是硬要长宽100%模糊(啥也看不清)展示?还是先拿一个压缩的图片做占位,在鼠标移入或点击时放大预览?今天偶然打开PC端QQ空间时,我发现了一种似乎更好的方式——鼠标移入时在范围内上下滚动图片预览,移出时停止滚动。直到用户点击图片跳转到详情展示:分析这种方式着实让我“眼前一亮”,一定程度上带给了用户新奇的体验感。顺着思路,一键f12打开源码,我看到了这样的代码:显而易见,QQ应该是采用了js监听鼠标位

  • 大四 Java开发实习近一年 记录(每6至12月更新一次)

    大四 Java开发实习近一年 记录(每6至12月更新一次)17年7月4号是我实习生入职的日子,因为是校企合作,所以没有面试、老师推荐、直接入职。刚来北京第一个感觉就是人多,还有就是热。刚到公司第一天,部门经理安排了我的mentor,他也是我的项目经理,安排座位之后给他我发了一些项目文档,让我先熟悉一下项目,然后给我发了几个常用工具的安装包,最重要的就是IDEA,之前在学校一直用MyEclipse,用了IDEA之后感觉确实不错,界面很漂亮。…

  • 什么是虚拟机?什么是Java虚拟机?

    什么是虚拟机?什么是Java虚拟机?什么是虚拟机?什么是Java虚拟机?虚拟机介绍虚拟机,就是虚拟的计算机,可以执行一系列虚拟计算机指令,大体上可以分为系统虚拟机和程序虚拟机。它们运行时,都会受到虚拟机提供的资源的限制。系统虚拟机:仿真模拟系统的,比如VisualBox,VMware。程序虚拟机:为执行单个计算机程序设计的,比如Java虚拟机。JAVA虚拟机Java虚拟机是一台执行字节码的虚拟机计算机,但是字节码不一定是由Java语言编译而成。只要使用这一套虚拟机规则的语言,就可以享受到跨平台,垃圾收集以及可靠的即时编译器

  • oracle笛卡尔积「建议收藏」

    oracle笛卡尔积「建议收藏」笛卡尔积定义:多张表相乘,简单的说就是两个集合相乘的积。(列数相加,行数相乘)先建了两张表,课程表:信息表:1.内连接innerjoinon 内连接:笛卡尔积中,只显示有关联的数据,无关联不显示。select*fromlefttable左表,righttable右表where左表.主键=右表.外键;select*fromlefttable左表innerjoin右表…

  • id门禁卡复制到手机_怎么把手机变成门禁卡 手机NFC复制门禁卡图文教程

    id门禁卡复制到手机_怎么把手机变成门禁卡 手机NFC复制门禁卡图文教程无论是在学校、小区或者是单位里面,一般都会有一道安全的门禁,保证范围内部的安全。但是每次都需要找到专用的门禁卡开门,经常容易忘记或者不小心弄丢了。今天,小编教大家一个技巧,教你如何把门禁卡悄无声息的放在手机上,这样以后就可以用手机当门禁卡了,这样是不是方便很多呢?下面是详细的方法步骤。通过修改手机NFCID过门禁大概流程就是利用手机上的APP(推荐:NFCTagInfo)读取出门禁卡的ID,然…

  • chmod命令详细用法

    chmod命令详细用法指令名称:chmod使用权限:所有使用者使用方式:chmod[-cfvR][–help][–version]modefile…说明:Linux/Unix的档案调用权限分为三级:档案拥有者、群组、其他。利用chmod可以藉以控制档案如何被他人所调用。参数:mode:权限设定字串,格式如下:[ugoa…][[±=][rwxX]…][,…],其中…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号