您现在的位置是:首页 > 正文

如何调用sdk接口_如何使用 RestSharp 调用 WebAPI 接口

2024-02-01 04:06:09阅读 2

49224784e9b0f256233f6051b13974e9.gif

REST 是由 Representational State Transfer 这三个单词前缀合成,这种架构风格在前几年特别流行,Restful API 的行为规范可以参考: https://docs.microsoft.com/en-us/azure/architecture/best-practices/api-design  ,通常 RESTful API 返回的格式为常见的 PlianText, JSON , XML 格式。

RestSharp 是一个开源的 Http 客户端类库,非常方便和 RESTful 格式的 Service 进行交互,??的是,这个类库封装了 request 请求过程中复杂的细节,而且 RestSharp 支持同步和异步两种请求模式。

这篇文章将会讨论如何使用 RestSharp 去请求 Asp.NET Core 服务。

实现 DefaultController

打开 DefaultController.cs 文件并用下面的代码进行替换。


using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;

namespace RESTAPIDemo.Controllers
{
   [Route("api/[controller]")]
   [ApiController]
   public class DefaultController : ControllerBase
   {
       private readonly Dictionary<int, string> authors = new Dictionary<int, string>();
       public DefaultController()
       {
           authors.Add(1, "Joydip Kanjilal");
           authors.Add(2, "Steve Smith");
           authors.Add(3, "Michele Smith");
       }
       
       [HttpGet]
       public List<string> Get()
       {
           List<string> lstAuthors = new List<string>();
           foreach (KeyValuePair<int,string> keyValuePair in authors)
               lstAuthors.Add(keyValuePair.Value);
           return lstAuthors;
       }
       
       [HttpGet("{id}", Name = "Get")]
       public string Get(int id)
       {
           return authors[id];
       }
       
       [HttpPost]
       public void Post([FromBody] string value)
       {
           authors.Add(4, value);
       }
       
       [HttpPut("{id}")]
       public void Put(int id, [FromBody] string value)
       {
           authors[id] = value;
       }

       [HttpDelete("{id}")]
       public void Delete(int id)
       {
           authors.Remove(id);
       }
   }
}

参考上面的 DefaultController 类,可以发现 Action 方法的名字对应着 Http 动词的 GET,POST,PUT 和 DELETE,为了简单起见,我使用了 Dictionary 来存取数据,你可以用 浏览器 或者 Postman 或者 Fiddler 进行测试,请注意,这里为了方便,我在 Post 方法中使用了硬编码,实际场景中你可以用自己的方式生成唯一ID。

接下来的章节我们将会学习如何使用 RestSharp 去调用刚才构建的 API 接口。

安装 RestSharp

要想使用 RestSharp,你可以使用 Visual Studio 2019 中的 NuGet package manager 可视化界面进行安装,或者通过 NuGet package manager console 命令行输入如下命令:


Install-Package RestSharp

使用 RestSharp 调用 ASP.NET Core API

一旦 RestSharp 成功引用到项目之后,就可以使用它了,首先, 你需要创建 RestClient 实例,下面的代码展示了如何对 RestClient 进行实例化和初始化操作,要注意的是构造函数中的 url 配置的是 基址,言外之意这不是完整的url。


RestClient client = new RestClient("http://localhost:58179/api/");

接下来,你可以传递 资源名 和 请求方式 两个参数来实例化 RestRequest 对象,下面的代码展示了如何实现。


RestRequest request = new RestRequest("Default", Method.GET);

最后,你可以执行 request 请求,再将返回的结果序列化, 最后用一个合适的对象接收,就像下面代码一样。


IRestResponsestring>> response = client.Executestring>>(request);

下面是完整的可供参考的代码清单。


using RestSharp;
using System;
using System.Collections.Generic;
namespace RESTSharpClientDemo
{
    class Program
    {
        private static RestClient client = new RestClient("http://localhost:58179/api/");
        
        static void Main(string[] args)
        {
            RestRequest request = new RestRequest("Default",Method.GET);
            IRestResponsestring>> response = client.Executestring>>(request);
            Console.ReadKey();
        }
    }
}

如果想使用 RestSharp 发送 POST 请求,可以使用如下代码。


RestRequest request = new RestRequest("Default", Method.POST);
request.AddJsonBody("Robert Michael");
var response = client.Execute(request);

RestSharp 可以跨多个 .NET 平台使用,比如说:Momo,Xarmain,Blazer 等等,这也是它为什么非常流行的原因,而且 RestSharp 支持通过泛型方式获取结果,这个特性特别 ??,想了解更多 RestSharp 知识,可参考 Github:https://github.com/restsharp/RestSharp

译文链接:https://www.infoworld.com/article/3489481/how-to-consume-an-aspnet-core-web-api-using-restsharp.html

f967836bf8fadbab2e1ade219e215996.png

往期 精彩 回顾

【推荐】.NET Core开发实战视频课程 ★★★

.NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划

【.NET Core微服务实战-统一身份认证】开篇及目录索引

Redis基本使用及百亿数据量中的使用技巧分享(附视频地址及观看指南)

.NET Core中的一个接口多种实现的依赖注入与动态选择看这篇就够了

10个小技巧助您写出高性能的ASP.NET Core代码

用abp vNext快速开发Quartz.NET定时任务管理界面

在ASP.NET Core中创建基于Quartz.NET托管服务轻松实现作业调度

现身说法:实际业务出发分析百亿数据量下的多表查询优化

关于C#异步编程你应该了解的几点建议

C#异步编程看这篇就够了

网站文章

  • 自由浏览器 android,百度浏览器发布安卓6.1版 趣味视频弹幕吐槽不停

    自由浏览器 android,百度浏览器发布安卓6.1版 趣味视频弹幕吐槽不停

    9月15日,深受安卓用户喜爱的百度浏览器发布了全新Android6.1版本,继续主打趣星球专区功能,号召广大小伙伴们上趣星球哔哔,做个有趣的人。本次推出Android6.1版,不仅在功能方面富有创新,...

    2024-02-01 04:06:03
  • 18春计算机辅助设计作业答案,18春天大《计算机辅助设计与制造》在线作业一二答案.doc...

    (单选题) 1: 在CAD/CAM系统中,CAM是指()。A: 计算机辅助设计B: 计算机辅助制造C: 计算机辅助工程D: 计算机辅助工艺过程设计正确答案: B(单选题) 2: 当前应用得最普遍的CA...

    2024-02-01 04:05:56
  • vue-指令

    vue-指令

    费话不说,想看介绍的上官网https://cn.vuejs.org/v2/,中文官网,相信大家都能看得懂学习vue第一步一定是从指令开始,博主也不例外。1.v-text 向页面展示文本信息<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"...

    2024-02-01 04:05:27
  • 页面生成图片插件 html2canvas

    页面生成图片插件 html2canvas

    2024-02-01 04:05:21
  • ASP.NET 关于FORM认证

    第一部分 如何运用 Form 表单认证? ASP.NET 的安全认证,共有“Windows”“Form”“Passport”“None”四种验证模式。“Windows”与“None”没有起到保护的作用,不推荐使用;“Passport”我又没用过,唉……所以我只好讲讲“Form”认证了。我打算分三部分: 第一部分 —— 怎样实现From 认证; 第二部分 —— Form 认证的实战运...

    2024-02-01 04:05:15
  • el-table表中嵌套过多的el-input卡顿问题,优化方案

    el-table表中嵌套过多的el-input卡顿问题,优化方案

    根据切换不同页码,切割el-table中的数据 进行展示对应的分页的数据,不在分页范围内,不做展示,从而解决了输入卡顿的问题,每次加载和修改都是加载某一个的数据,某一页的数据也就对应总的数据中的一部分...

    2024-02-01 04:04:47
  • 前端 -- 基础 VSCode 工具生成骨架标签新增代码 解释详解

    前端 -- 基础 VSCode 工具生成骨架标签新增代码 解释详解

    生成骨架标签新增代码详解

    2024-02-01 04:04:35
  • vue diff算法

    vue diff算法 在vue中的实现原理,patch函数、patchVnode、updateChildren、sameVnode函数的介绍

    2024-02-01 04:04:27
  • AndroidStudio 本地代码上传githup上面

    AndroidStudio 本地代码上传githup上面

     第一步:首先在androidstudio 中 Terminal 中 创建 git init第二步:然后在githup中创建如果在创建的时候点击了 Initalize this repository with aREADME   到时候push代码会抱一个错误 error: failed to push some refs解决方案是:1、在使用git 对源代码进行push到...

    2024-02-01 04:03:56
  • cs计算机科学好学吗,CMU哪个专业最难申请?竟然不是计算机!_托普仕留学

    cs计算机科学好学吗,CMU哪个专业最难申请?竟然不是计算机!_托普仕留学

    CMU全称为卡内基梅隆大学,是美国顶级的私立高等学府,该校多个专业位居全美前列,那么你知道CMU哪个专业最难申请吗?经数据考证,最难申请的竟然不是大名鼎鼎的计算机专业!首先,CMU的本科有7个学院,包...

    2024-02-01 04:03:48