精华内容
下载资源
问答
  • restsharp教程
    2022-08-02 10:51:53

    restsharp简单使用

    RestClient clientYH = new RestClient(YWZTGetUserInfoUrl);//指定请求的url
    RestRequest requestYH = new RestRequest(Method.POST);
    requestYH.Timeout = 10000;
    requestYH.AddParameter(“loginId”, loginId);
    requestYH.AddParameter(“clientId”, YWZTclientId);
    IRestResponse responseYH = clientYH.Post(requestYH); // 执行请求
    string userInfo = responseYH.Content; // 文本结果

    更多相关内容
  • VVVV-REST 基于 RestSharp 的 VVVV 节点
  • .net RestSharp使用

    2021-12-16 10:14:48
    RestSharp Newtonsoft.Json 2.编写json、form-data请求代码 using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using RestSharp; using RestTemplate.model; namespace ...

    1.加入依赖

    RestSharp

    Newtonsoft.Json

    2.编写json、form-data请求代码

    using Microsoft.AspNetCore.Mvc;
    using Newtonsoft.Json;
    using Newtonsoft.Json.Linq;
    using RestSharp;
    using RestTemplate.model;
    
    namespace RestTemplate.Controllers
    {
        [Route("api/[controller]")]
        [ApiController]
        public class MyController : ControllerBase
        {
            [HttpGet(Name = "my")]
            public object Get() { 
                return formDataPost();
            }
    
            private object formDataPost() {
                var client = new RestClient("https://xxx/api");
                var request = new RestRequest(Method.POST);
                request.RequestFormat = DataFormat.Json;
                request.AddHeader("cookie", "_ga=GA1.2.844273596.1637578150; __auc=a6cb9d4517d47438f5698601fcc; JSESSIONID=686692C069508361B7B6DD7E524E1DC8");
                request.AddParameter("pageSize", 100);
                request.AddParameter("pageNumber", 1);
                request.AddParameter("sortOrder", "asc");
                request.AddParameter("keywords", "");
                IRestResponse response = client.Execute(request);
                var content = response.Content;
    
                return content;
            }
    
            private object json1Post() {
                var client = new RestClient("https://xxx/api");
                var request = new RestRequest(Method.POST);
                request.AddHeader("Content-Type", "application/json");
                request.AddHeader("Authorization", "MTNkMDA5NDUwODg2ZDMwNTkyNWNhNmMzM2M1MjE0NjE=");
                request.RequestFormat = DataFormat.Json;
                request.AddBody(new { projectId = 400 });
                IRestResponse response = client.Execute(request);
                var content = response.Content;
    
                return content;
            }
    
            private object json2Post() {
                var client = new RestClient("https://xxx/api");
                var request = new RestRequest(Method.POST);
                request.AddHeader("Content-Type", "application/json");
                request.AddHeader("Authorization", "MTNkMDA5NDUwODg2ZDMwNTkyNWNhNmMzM2M1MjE0NjE=");
    
                JObject obj = new JObject();
                obj.Add("projectId", 400);
                // 序列化JSON数据
                string post_data = JsonConvert.SerializeObject(obj);
                // 将JSON参数添加至请求中
                request.AddParameter("application/json", post_data, ParameterType.RequestBody);
    
                IRestResponse response = client.Execute(request);
                var content = response.Content;
    
                return content;
            }
    
            private object json3Post() {
                var client = new RestClient("https://xxx/api");
                var request = new RestRequest(Method.POST);
                request.AddHeader("Authorization", "NDMyZjU4NmI5YjU4Y2ZlN2ZjNmUyNDUzMjY1NTY2Njg=");
    
                var param = new RequestVo();
                param.projectId = 202;
                request.AddJsonBody(param);
                IRestResponse response = client.Execute(request);
                var content = response.Content;
    
                return content;
            }
    
            private object noParameterPost() {
    
                var client = new RestClient("https://xxx/api");
                var request = new RestRequest(Method.POST);
                request.AddHeader("Authorization", "NDMyZjU4NmI5YjU4Y2ZlN2ZjNmUyNDUzMjY1NTY2Njg=");
                IRestResponse response = client.Execute(request);
                var content = response.Content;
    
                return content;
            }
        }
    }

    展开全文
  • RestSharp使用说明

    千次阅读 2020-04-03 10:26:52
    如果只有少量一次性请求需要封装为API,则可以如下使用RestSharp : using RestSharp; using RestSharp.Authenticators; var client = new RestClient(); client.BaseUrl = new Uri("http://twitter.com"); client...

    一、新手入门

    如果只有少量一次性请求需要封装为API,则可以如下使用RestSharp :

    using RestSharp;
    using RestSharp.Authenticators;
     
    var client = new RestClient();
    client.BaseUrl = new Uri("http://twitter.com");
    client.Authenticator = new HttpBasicAuthenticator("username", "password");
     
    var request = new RestRequest();
    request.Resource = "statuses/friends_timeline.xml";
     
    IRestResponse response = client.Execute(request);
    

    IRestResponse 接口中包含了所有远程服务返回的信息,可以访问头信息(header)数据内容(content)、HTTP状态等。建议使用泛型将返回结果自动反序列化为.NET实体类。

    关于错误处理:

    如果发生了网络传输错误(网络瘫痪,DNS查找失败等),RestResponse.ResponseStatus 将会置为Error ,否则RestResponse.ResponseStatus的值为Completed 。如果API返回404,ResponseStatus 仍然是Completed 。如果需要访问返回的HTTP状态码,则需要查看RestResponse.StatusCode 的值,Status 属性是请求完成的标识,独立于API错误处理。

    二、推荐用法

    RestSharp适合作为API代理类实现的基础,下面是 Twilio类库中的一些使用示例:

    创建一个包含API代理实现的类,声明一个执行方法当作所有请求的入口。这个执行方法允许设置常用参数和其它跨请求共享设置(例如认证),因为每一个请求都需要帐户ID和密钥,所以在建立新的代理实例时都需要传递这两个值。需要注意的是执行过程中不会抛出异常,但是可以在ErrorException 中访问到异常信息。

    // TwilioApi.cs
    public class TwilioApi {
        const string BaseUrl = "https://api.twilio.com/2008-08-01";
     
        readonly string _accountSid;
        readonly string _secretKey;
     
        public TwilioApi(string accountSid, string secretKey) {
            _accountSid = accountSid;
            _secretKey = secretKey;
        }
     
        public T Execute<T>(RestRequest request) where T : new()
        {
            var client = new RestClient();
            client.BaseUrl = new System.Uri(BaseUrl);
            client.Authenticator = new HttpBasicAuthenticator(_accountSid, _secretKey);
            request.AddParameter("AccountSid", _accountSid, ParameterType.UrlSegment); // used on every request
            var response = client.Execute<T>(request);
     
            if (response.ErrorException != null)
            {
                const string message = "Error retrieving response.  Check inner details for more info.";
                var twilioException = new ApplicationException(message, response.ErrorException);
                throw twilioException;
            }
            return response.Data;
        }
     
    }
    

    接下来,定义一个实体类来映射API返回的数据,再定义一个方法用来访问API同时获取返回的Call资源的具体信息:

    // Call.cs
    public class Call
    {
        public string Sid { get; set; }
        public DateTime DateCreated { get; set; }
        public DateTime DateUpdated { get; set; }
        public string CallSegmentSid { get; set; }
        public string AccountSid { get; set; }
        public string Called { get; set; }
        public string Caller { get; set; }
        public string PhoneNumberSid { get; set; }
        public int Status { get; set; }
        public DateTime StartTime { get; set; }
        public DateTime EndTime { get; set; }
        public int Duration { get; set; }
        public decimal Price { get; set; }
        public int Flags { get; set; }
    }
     
    // TwilioApi.cs, method of TwilioApi class
    public Call GetCall(string callSid) 
    {
        var request = new RestRequest();
        request.Resource = "Accounts/{AccountSid}/Calls/{CallSid}";
        request.RootElement = "Call";
     
        request.AddParameter("CallSid", callSid, ParameterType.UrlSegment);
     
        return Execute<Call>(request);
    }
    

    有一些神奇之处是RestSharp 需要关心而我们不必关注:

    1、API返回的XML数据被默认XmlDeserializer 检测到,同时反序列化为Call对象。

    2、默认RestRequest 对应HTTP中的GET 请求,可以通过设置RestRequest 的Method属性或者在创建请求实例时通过构造函数指定Method 类型来改变请求类型。

    3、UrlSegment 类型参数会根据Resource 属性值中匹配的名称标签将值注入到URL中,AccountSid 在 TwilioApi.Execute 赋值,对于每一个请求它都是相同的。

    4、我们指定了从哪里开始反序列化的根元素名称,在本例中,返回的XML形如 ,因为Response元素不包含与我们定义的实体模型相关的任何信息,所以从元素树的下一个节点开始反序列化(Call节点)。

    我们还可以定义POST(和 PUT/DELETE/HEAD/OPTIONS )请求:

    // TwilioApi.cs, method of TwilioApi class
    public Call InitiateOutboundCall(CallOptions options) 
    {
        Require.Argument("Caller", options.Caller);
        Require.Argument("Called", options.Called);
        Require.Argument("Url", options.Url);
     
        var request = new RestRequest(Method.POST);
        request.Resource = "Accounts/{AccountSid}/Calls";
        request.RootElement = "Calls";
     
        request.AddParameter("Caller", options.Caller);
        request.AddParameter("Called", options.Called);
        request.AddParameter("Url", options.Url);
     
        if (options.Method.HasValue) request.AddParameter("Method", options.Method);
        if (options.SendDigits.HasValue()) request.AddParameter("SendDigits", options.SendDigits);
        if (options.IfMachine.HasValue) request.AddParameter("IfMachine", options.IfMachine.Value);
        if (options.Timeout.HasValue) request.AddParameter("Timeout", options.Timeout.Value);
     
        return Execute<Call>(request);
    }
    

    本示例同样证明RestSharp是一个轻量级验证助手,可以在请求前先校验提交的参数值是否有效。

    示例中通过AddParameter 方法添加的参数值将通过标准编码格式提交,类似于通过网页提交的表单。如果是GET形式的请求(GET/DELETE/OPTIONS/HEAD) ,参数值将通过查询字符串提交,AddParameter() 方法也可以添加头信息和cookie 参数。将一个对象的所有属性作为参数时,使用AddObject() 方法。上传一个文件时用 AddFile() 方法(请求会以多种编码格式发送),当请求中包含请求体时(例如XML或者JSON),用AddBody()方法。

    三、其它应用示例

    下面的示例演示了用流(stream)代替内存缓冲请求内容,这在请求大量数据同时需要立刻写入磁盘的场景下非常有用:

    string tempFile = Path.GetTempFileName();
    using (var writer = File.OpenWrite(tempFile))
    {
        var client = new RestClient(baseUrl);
        var request = new RestRequest("Assets/LargeFile.7z");
        request.ResponseWriter = (responseStream) => responseStream.CopyTo(writer);
        var response = client.DownloadData(request);
    }
    

    四、反序列化

    RestSharp拥有处理XML和JSON的反序列化器,当收到响应时,RestClient通过服务器返回的Content Type 选择适合的反序列化器。默认设置可以通过自定义设置的Content Type覆盖,支持的Content Type如下:

    • application/json - JsonDeserializer
    • application/xml - XmlDeserializer
    • text/json - JsonDeserializer
    • text/xml - XmlDeserializer
    • *+json - JsonDeserializer (content types using a Structured Suffix Syntax specifying JSON)
    • *+xml - XmlDeserializer (content types using a Structured Suffix Syntax specifying XML)
    • @*@ - XmlDeserializer (all other content types not specified)
      默认的反序列化器尝试解除必须解析XML或者JSON的痛苦,通过映射CLR实体类来实现。实体类定义了如何反序列化返回的数据。RestSharp不再采用遍历返回的数据,再从实体类中查找匹配的属性的方式反序列化数据,而是把实体类当作起点,循环遍历可访问的可写属性,同时在返回的数据中查找相应的元素。

    注意:默认的反序列化器不支持 DataAnnotation/DataMember ,如果要使用,必须实现和注册自己的IDeserializer ,IDeserializer 是包装了与实体类中属性兼容的反序列化库。

    例如下面的XML和JSON:

    <Person>
        <Name>John</Name>
        <Id>28</Id>
    </Person>
     
    {
        "Name": "John",
        "Id": 28
    }
    

    映射相同的实体类Person:

    public class Person 
    {
        public string Name { get; set; }
        public int Id { get; set; }
    }
    

    **支持的属性类型(数据类型):

    XmlDeserializer:

    • Primitives (int, short, long, etc)
    • Decimal
    • DateTime
    • String
    • Guid
    • List
    • Nested classes
    • Nullable versions of the above listed types

    JsonDeserializer

    • Primitives
    • Decimal
    • DateTime
    • String
    • Guid
    • List
    • Dictionary<T1, T2>
    • Nested classes
    • Nullable versions of the above listed types

    名称匹配:

    XmlDeserializer

    当查找匹配元素时,默认的XML反序列化器查找元素和特性遵循以下顺序:

    • 元素和名称绝对匹配
    • 元素和名称的小写匹配
    • 元素和名称的骆驼命名匹配
    • 元素和名称去掉下划线和破折号匹配
    • 特性和名称绝对匹配
    • 特性和名称的小写匹配
    • 特性和名称的骆驼命名匹配
    • 特性和名称去掉下划线和破折号匹配
      可以使用@DeserializeAs@ 特性来更改将在属性中查找的名称,如果要将属性的命名与XML中的名称同,这一点将非常有用。

    例如:

    [DeserializeAs(Name = "forecast_information")]
    public ForecastInformation Forecast { get; set; }
    

    有一种返回元素值的特殊情况,示例如下:

    如果返回的XML数据如下:

    <Response>Hello world</Response>
    

    没有办法用c#的类直接描述

    public class Response 
    {
    }
    

    需要一些东西来保存返回的元素值,在本例中,添加一个Value属性:

    public class Response
    {
         public string Value { get; set; }
    }
    

    JsonDeserializer

    当为匹配元素查找数据时,默认的JSON反序列化器在查找元素时将遵循以下顺序:

    • 与名称绝对匹配
    • 与名称骆驼命名匹配
    • 与名称小写匹配
    • 与名称加了下划线匹配 (e.g. ProductId -> Product_Id)
    • 与名称加了下划线小写形式匹配 (e.g. Product_id -> product_id)

    XML反序列化器可以通过设置属性的DeserializeAs 特性来改变如何与JSON的键映射。

    例如:

    [DeserializeAs(Name = "forecast_information")]
    public ForecastInformation Forecast { get; set; }
    

    集合处理(List/Dictionary)

    XmlDeserializer

    处理两种不同形式的集合:内联和嵌套

    <?xml version="1.0" encoding="utf-8" ?>
    <InlineListSample>
        <image src="1.gif">value1</image>
        <image src="2.gif">value2</image>
        <image src="3.gif">value3</image>
        <image src="4.gif">value4</image>
    </InlineListSample>
     
    <?xml version="1.0" encoding="utf-8" ?>
    <NestedListSample>
       <images>
          <image src="1.gif">value1</image>
          <image src="2.gif">value2</image>
          <image src="3.gif">value3</image>
          <image src="4.gif">value4</image>
        </images>
    </NestedListSample>
    

    对应的c#形式如下:

    public class ListSample
    {
        public List<Image> Images { get; set; }
    }
        
    public class Image
    {
        public string Src { get; set; }
        public string Value { get; set; }
    }
    

    如果在同一份文档中两种元素结构恰巧同时存在,优先级按此顺序:parented/nested/regular 。

    JsonDeserializer

    在映射JSON数组和字典时,RestSharp支持集合(List)和字典(Dictionary<string, T> )

    日期处理

    XmlDeserializer

    • 如果RestRequest.DateFormat已经指定了返回值的格式,则返回值使用指定格式字符串解析。
    • 如果 RestRequest.DateFormat 没有指定, 用DateTime.Parse计算元素值. 如果该方法无法处理当前格式, 则需要改变属性类型为String然后再进行处理 。

    JsonDeserializer

    如果没有通过RestRequest.DateFormat指定日期格式,RestSharp尝试用以下格式字符转来反序列化DateTime类型的属性(顺序如下):

    • “u”
    • “s”
    • “yyyy’-‘MM’-‘dd’T’HH’:‘mm’:‘ss’Z’”
    • “yyyy-MM-ddTHH:mm:ssZ”
    • “yyyy-MM-dd HH:mm:ssZ”
    • “yyyy-MM-ddTHH:mm:ss”
    • “yyyy-MM-ddTHH:mm:sszzzzzz”

    JsonSerializer 默认支持以下JSON日期格式,如果指定了具体的RestRequest.DateFormat ,则默认被忽略:

    • ISO - 1910-09-25T09:30:25Z
    • Javascript Date Objects - new Date(-1870352975000)
    • Unix Timestamps - 1435206458
      对于JS日期对象,在JS纪元时间基础上加毫秒级的时间间隔,根据指定的时区调整。

    自定义

    重写默认反序列化器

    可以通过如下步骤重写自己的反序列化器处理返回的数据内:

    • 创建一个类同时实现IDeserializer接口。
    • 用RestClient.AddHandler(contentType, IDeserializer)方法注册handler并关联content类型,如果此content类型已经被注册过,则会被指定的刚刚指定的handker重写,可以通过 RestClient.ClearHandlers()方法移除所有注册的handler,或者通过RestClient.RemoveHandler(contentType)移除某一个handler。

    重写默认的序列化器

    当使用XML或者JSON格式数据作为请求体时,可以使用自己实现的ISerializer :

    var request = new RestRequest();
    request.RequestFormat = DataFormat.Xml;
    request.XmlSerializer = new SuperXmlSerializer(); // implements ISerializer
    request.AddBody(person); // object serialized to XML using your custom serializer;
    

    重写JsonSerializationStrategy

    序列化过程中,尝试支持c#和JSOM间不同投影策略将会陷入麻烦,重写MapClrMemberNameToJsonFieldName 将会有帮助:

    class SnakeJsonSerializerStrategy : PocoJsonSerializerStrategy
    {
        protected override string MapClrMemberNameToJsonFieldName(string clrPropertyName)
        {
            //PascalCase to snake_case
            return string.Concat(clrPropertyName.Select((x, i) => i > 0 && char.IsUpper(x) ? "_" + char.ToLower(x).ToString() : x.ToString()));
        }
    }
    

    然后在代码中使用:

    SimpleJson.CurrentJsonSerializerStrategy = new SnakeJsonSerializerStrategy();
    

    五、认证

    RestSharp包含HTTP认证,可以通过IAuthenticator 完成自己的实现同时用RestClient注册:

    var client = new RestClient();
    client.Authenticator = new SuperAuthenticator(); // implements IAuthenticator
    

    在使用RestClient.Execute 或 RestClient.Execute

    使用SimpleAuthenticator

    SimpleAuthenticator 允许把用户名和密码当作GET 或 POST参数传递,具体取决于所使用的请求方法:

    var client = new RestClient("http://example.com");
    client.Authenticator = new SimpleAuthenticator("username", "foo", "password", "bar");
     
    var request = new RestRequest("resource", Method.GET);
    client.Execute(request);
    

    请求生成的URL应该是如下形式:http://example.com/resource?username=foo&password=bar

    上述请求如果使用PUT或者POST请求时,将会以编码表单形式提交值。

    六、RestRequest的参数类型

    新建了RestRequest 后,可以为它添加参数,下面是5种当前支持的参数类型以及其在使用默认IHttp实现下的特性描述。

    Cookie

    添加到cookies 列表的参数将会随着请求被单独发送,Cookie名称是参数的名称,值则是传递的参数的值(.ToString )。

    HttpHeader

    添加作为 HTTP header 的参数会随着请求被单独发送,Header名称是参数的名称,Header值则是传递的参数的值。

    注意有些受限制的headers表现不同或者会被忽略,可以在Http.cs中的_restrictedHeaderActions 字典中查看它们的特性。

    GetOrPost

    如果执行GET请求,RestSharp将会追加参数到URL中,形式如下:“url?name1=value1&name2=value2” ;

    如果是POST或者是PUT请求,则取决于请求中是否有文件,如果没有,则参数以请求体发送,形如“name1=value1&name2=value2” ,将会以application/x-www-form-urlencoded格式发送,基于不同的请求方法会有不同的表现。

    两种情形下,参数名称和值都会自动被url编码。

    如果请求中有文件,RestSharp将会发送multipart/form-data 形式的请求,发送的参数将会形如以下格式:

    Content-Disposition: form-data; name="parameterName"
     
    ParameterValue
    

    UrlSegment

    不同于GetOrPost ,这种参数类型在RequestUrl 中用占位符代替值。

    var request = new RestRequest("health/{entity}/status");
    request.AddParameter("entity", "s2", ParameterType.UrlSegment);
    

    当执行请求时,RestSharp将尝试用参数名称匹配占位符,匹配成功后则用参数值代替占位符,上面的代码结果是:“health/s2/status” 。

    RequestBody

    如果设置了这个参数,参数值会以请求的body方式传递。请求只能接收一个RequestBody 参数(第一个)。

    参数名称将被用作请求的Content-Type header 。

    RequestBody 参数对于GET或者HEAD 是无效的,它们不需要发送请求体。

    如果同时还有GetOrPost 参数,则该参数将重写RequestBody ——RestSharp 不会合并这些参数,但会抛弃RequestBody 参数。

    QueryString

    类似于GetOrPost ,除此之外,它总是用如下形式追加参数到URL:“url?name1=value1&name2=value2” ,不管是什么类型的请求方法。

    七、缓存

    自动缓存管理

    RestSharp 102.4 +版本支持所有IRestClient 实例的请求共享同一个System.Net.CookieContainer 管理,通过这种方式,responses 设置或没设置缓存在后续的请求中都会使用,为了共享CookieContainer ,在创建RestClient 时设置属性即可:

    var client = new RestClient("http://server/");
    client.CookieContainer = new System.Net.CookieContainer();
    

    八、跨平台支持

    RestSharp包含2个版本的lib:

    • .NET Framework 4.5.2

    • .NET Standard 2.0
      意味着可以在以下平台应用RestSharp:

    • Windows using .NET Framework

    • Windows using .NET Core

    • Linux or Mac using Mono

    • Linux or Mac using .NET Core

    • Any other platform that supports Mono 5 or .NET Core 2

    展开全文
  • Java 语言 其他各种语言 还支持其他各种语言: 目前支持的语言有: HTTP C (LibCurl) cURL C#(RestSharp) Go Java OK HTTP Unirest Javascript NodeJS Objective-C(NSURL) OCaml(Cohttp) PHP Python Ruby(NET::Http)...

    Postman 是一个接口测试和 http 请求的神器,非常好用。

    官方 github 地址: https://github.com/postmanlabs

    Postman 的优点:

    • 支持各种的请求类型: get、post、put、patch、delete 等
    • 支持在线存储数据,通过账号就可以进行迁移数据
    • 很方便的支持请求 header 和请求参数的设置
    • 支持不同的认证机制,包括 Basic Auth,Digest Auth,OAuth 1.0,OAuth 2.0 等
    • 响应数据是自动按照语法格式高亮的,包括 HTML,JSON 和 XML
    • 以下内容主要参考: Github: api_tool_postman

    安装

    Postman 可以单独作为一个应用安装,也可以作为 chrome 的一个插件安装。

    下面主要介绍下载安装独立版本app 软件的 Postman 的过程:

    去主页Postman 官网找到:Postman | Apps

    去下载自己平台的版本:

    • Mac
    • Windows(x86/x64)
    • Linux(x86/x64) 即可。

    快速入门,总体使用方略

    安装成功后,打开软件。

    新建接口

    对应的Request:New -> Request

    或,在右边的 Tab 页面中点击加号+:

    即可看到新建的 Tab 页:

    设置 HTTP 请求的方法

    设置 HTTP 的 Method 方法和输入 api 的地址

    设置相关请求头信息

    设置相关 GET 或 POST 等的参数

    发送请求

    都填写好之后,点击 Send 去发送请求 Request:

    查看响应 Response的信息

    然后可以重复上述修改 Request 的参数,点击 Send 去发送请求的过程,以便调试到 API 接口正常工作为止。

    保存接口配置

    待整个接口都调试完毕后,记得点击 Save 去保存接口信息:

    去保存当前 API 接口,然后需要填写相关的接口信息:

    • Request Name: 请求的名字
      • 我一般习惯用保存为 接口的最后的字段名,比如http://{% raw %}{{% endraw %}{server_address}}/ucows/login/login中的/login/login
    • Request Description: 接口的描述
      • 可选 最好写上该接口的要实现的基本功能和相关注意事项
      • 支持 Markdown 语法
    • Select a collection or folder to save: 选择要保存到哪个分组(或文件夹)
      • 往往保存到某个 API 接口到所属的该项目名的分组

    填写好内容,选择好分组,再点击保存:

    此时,Tab 的右上角的黄色点(表示没有保存)消失了,表示已保存。

    且对应的分组中可以看到对应的接口了:[warning] 默认不保存返回的 Response 数据

    • 直接点击 Save 去保存,只能保存 API 本身(的 Request 请求),不会保存 Response 的数据
    • 想要保存 Response 数据,需要用后面要介绍的 多个 Example

    Request 的多参数操作详解

    自动解析多个参数 Params

    比如,对于一个 GET 的请求的 url 是: http://openapi.youdao.com/api?q=纠删码(EC)的学习&from=zh_CHS&to=EN&appKey=152e0e77723a0026&salt=4&sign=6BE15F1868019AD71C442E6399DB1FE4

    对应着其实是?key=value形式中包含多个 Http 的 GET 的 query string=query parameters

    Postman 可以自动帮我们解析出对应参数,可以点击 Params:

    看到展开的多个参数:

    如此就可以很方便的修改,增删对应的参数了。

    临时禁用参数

    且还支持,在不删除某参数的情况下,如果想要暂时不传参数,可以方便的通过不勾选的方式去实现:

    批量编辑 GET 的多个参数

    当然,如果想要批量的编辑参数,可以点击右上角的Bulk Edit,去实现批量编辑。

    接口描述与自动生成文档

    API 的描述中,也支持 Markdown,官方的接口说明文档:Intro to API documentation

    所以,可以很方便的添加有条理的接口描述,尤其是参数解释了:

    描述支持 markdown 语法

    而对于要解释的参数,可以通过之前的Param -> Bulk Edit的内容:

    拷贝过来,再继续去编辑:

    以及添加更多解释信息:

    点击 Update 后,即可保存。

    发布接口并生成 markdown 的描述文件

    去发布后:

    对应的效果:有道翻译

    Response 深入

    Response 数据显示模式

    Postman 对于返回的 Response 数据,支持三种显示模式。

    • 默认格式化后的 Pretty 模式

    • Raw 原始模式

    点击Raw,可以查看到返回的没有格式化之前的原始数据:

    • Preview 预览模式

    以及 Preview,是对应 Raw 原始格式的预览模式:

    Preview 这种模式的显示效果,好像是对于返回的是 html 页面这类,才比较有效果。

    Response 的 Cookies

    很多时候普通的 API 调用,倒是没有 Cookie 的:

    Response 的 Headers 头信息

    举例,此处返回的是有 Headers 头信息的:

    可以从中看到服务器是 Nginx 的。

    保存多个 Example

    之前想要实现,让导出的 API 文档中能看到接口返回的 Response 数据。后来发现是Example这个功能去实现此效果的。

    如何添加 Example

    继续点击Save Example:

    保存后,就能看到Example(1)了:

    单个 Example 在导出的 API 文档中的效果

    然后再去导出文档,导出文档中的确能看到返回数据的例子: 

    多个 Example 在导出的 API 文档中的效果

    其他好用的功能及工具

    分组 Collection

    在刚开始一个项目时,为了后续便于组织和管理,把同属该项目的多个 API,放在一组里

    所以要先去新建一个 Collection: New -> Collection

    使用了段时间后,建了多个分组的效果:

    单个分组展开后的效果:

    历史记录 History

    Postman 支持 history 历史记录,显示出最近使用过的 API: 

    用环境变量实现多服务器版本

    现存问题

    在测试 API 期间,往往存在多种环境,对应 IP 地址(或域名也不同)

    比如:

    • Prod: http://116.62.25.57/ucows
      • 用于开发完成发布到生产环境
    • Dev: http://123.206.191.125/ucows
      • 用于开发期间的线上的 Development 的测试环境
    • LocalTest: http://192.168.0.140:80/ucows
      • 用于开发期间配合后台开发人员的本地局域网内的本地环境,用于联合调试 API 接口

    而在测试 API 期间,往往需要手动去修改 API 的地址:

    效率比较低,且地址更换后之前地址就没法保留了。

    另外,且根据不同 IP 地址(或者域名)也不容易识别是哪套环境。

    Postman 支持用 Environment 环境变量去实现多服务器版本

    后来发现 Postman 中,有 Environment 和 Global Variable,用于解决这个问题,实现不同环境的管理:

    很明显,就可以用来实现不用手动修改 url 中的服务器地址,从而动态的实现,支持不同服务器环境:

    • Production 生产环境
    • Development 开发环境
    • Local 本地局域网环境

    如何使用 Enviroment 实现多服务器版本

    或者:

    Environments are a group of variables & values, that allow you to quickly switch the context for your requests and collections.

    Learn more about environments

    You can declare a variable in an environment and give it a starting value, then use it in a request by putting the variable name within curly-braces. Create an environment to get started.

    输入 Key 和 value:

    点击 Add 后:

    [info] 环境变量可以使用的地方

    • URL
    • URL params
    • Header values
    • form-data/url-encoded values
    • Raw body content
    • Helper fields
    • 写 test 测试脚本中
    • 通过 postman 的接口,获取或设置环境变量的值。

    此处把之前的在 url 中的 IP 地址(或域名)换成环境变量:

    鼠标移动到环境变量上,可以动态显示出具体的值:

    再去添加另外一个开发环境:

    则可添加完 2 个环境变量,表示两个服务器地址,两个版本:

    然后就可以切换不同服务器环境了:

    可以看到,同样的变量 server_address,在切换后对应 IP 地址就变成希望的开发环境的 IP 了:

    Postman 导出 API 文档中多个环境变量的效果

    顺带也去看看,导出为 API 文档后,带了这种 Environment 的变量的接口,文档长什么样子:

    发现是在发布之前,需要选择对应的环境的:

    发布后的文档,可以看到所选环境和对应服务器的 IP 的:

    当然发布文档后,也可以实时切换环境:

    环境变量的好处

    当更换服务器时,直接修改变量的 IP 地址:

    即可实时更新,当鼠标移动到变量上即可看到效果:

    代码生成工具

    查看当前请求的 HTTP 原始内容

    对于当前的请求,还可以通过点击 Code

    去查看对应的符合 HTTP 协议的原始的内容:

    各种语言的示例代码Code Generation Tools

    比如:

    • Swift 语言

    • Java 语言

    • 其他各种语言 还支持其他各种语言:

    目前支持的语言有:

    • HTTP
    • C (LibCurl)
    • cURL
    • C#(RestSharp)
    • Go
    • Java
      • OK HTTP
      • Unirest
    • Javascript
    • NodeJS
    • Objective-C(NSURL)
    • OCaml(Cohttp)
    • PHP
    • Python
    • Ruby(NET::Http)
    • Shell
    • Swift(NSURL)

    代码生成工具的好处是:在写调用此 API 的代码时,就可以参考对应代码,甚至拷贝粘贴对应代码,即可。

    测试接口

    选中某个分组后,点击 Runner

    选中某个分组后点击 Run

    即可看到测试结果: 

    关于此功能的介绍可参考Postman 官网git 图

    MockServer

    直接参考官网。

    功能界面

    多 Tab 分页

    Postman 支持多 tab 页,于此对比之前有些 API 调试工具就不支持多 Tab 页,比如Advanced Rest Client

    多 tab 的好处:

    方便在一个 tab 中测试,得到结果后,复制粘贴到另外的 tab 中,继续测试其它接口

    比如此处 tab1 中,测试了获取验证码接口后,拷贝手机号和验证码,粘贴到 tab2 中,继续测试注册的接口

    界面查看模式

    Postman 的默认的 Request 和 Response 是上下布局:

    此处点击右下角的Two pane view,就变成左右的了:

    [info] 左右布局的用途

    对于数据量很大,又想要同时看到请求和返回的数据的时候,应该比较有用。

    多颜色主题

    Posman 支持两种主题:

    • 深色主题

    当前是深色主题,效果很不错:

    • 浅色主题

    可以切换到 浅色主题:

    API 文档生成

    在服务端后台的开发人员测试好了接口后,打算把接口的各种信息发给使用此 API 的前端的移动端人员时,往往会遇到:

    要么是用复制粘贴 -> 格式不友好 要么是用 Postman 中截图 -> 方便看,但是不方便获得 API 接口和字段等文字内容 要么是用 Postman 中导出为 JSON -> json 文件中信息太繁杂,不利于找到所需要的信息 要么是用文档,比如去编写 Markdown 文档 -> 但后续 API 的变更需要实时同步修改文档,也会很麻烦 这都会导致别人查看和使用 API 时很不方便。

    -> 对此,Postman 提供了发布 API

    预览和发布 API 文档 下面介绍 Postman 中如何预览和发布 API 文档。

    简要概述步骤

    1. Collection
    2. 鼠标移动到某个 Collection,点击 三个点
    3. Publish Docs
    4. Publish
    5. 得到 Public URL
    6. 别人打开这个 Public URL,即可查看 API 文档

    预览 API 文档

    点击分组右边的大于号>

    如果只是预览,比如后台开发员自己查看 API 文档的话,可以选择:View in web

    等价于点击Publish Docs去发布:

    View in Web 后,有 Publish 的选项(见后面的截图)

    View in Web 后,会打开预览页面:

    比如:

    奶牛云

    https://documenter.getpostman.com/collection/view/669382-42273840-6237-dbae-5455-26b16f45e2b9

    而右边的示例代码,也可以从默认的 cURL 换成其他的:

    发布 API 文档

    如果想要让其他人能看到这个文档,则点击 Publish:

    然后会打开类似于这样的地址:

    Postman Documenter

    https://documenter.getpostman.com/collection/publish?meta=Y29sbGVjdGlvbl9pZD00MjI3Mzg0MC02MjM3LWRiYWUtNTQ1NS0yNmIxNmY0NWUyYjkmb3duZXI9NjY5MzgyJmNvbGxlY3Rpb25fbmFtZT0lRTUlQTUlQjYlRTclODklOUIlRTQlQkElOTE=

    点击 Publish 后,可以生成对应的公开的网页地址:

    打开 API 接口文档地址:

    https://documenter.getpostman.com/view/669382/collection/77fd4RM

    即可看到(和前面预览一样效果的 API 文档了):

    如此,别人即可查看对应的 API 接口文档。

    已发布的 API 文档支持自动更新

    后续如果自己的 API 接口修改后:

    比如:

    (后来发现,不用再去进入此预览和发布的流程,去更新文档,而是 Postman 自动支持)

    别人去刷新该文档的页面:

    https://documenter.getpostman.com/view/669382/collection/77fd4RM

    即可看到更新后的内容。

    展开全文
  • 培亚RHCE教程(下)

    2010-09-11 19:02:00
    培亚RHCE教程 7张dvd的,学习的时候写的草稿希望能对你有些帮助,因为那个台湾人..普通话很怪,错的地方请见谅,如果可以的话,,发个学习后的修改版笔记给我68605450@qq.com.不胜感激 由于大小限制分成了两部分
  • 一般我们说到网络框架,主要是指Socket网络框架,如果是Http的话,我们没有必要单独介绍了,简单用可以直接使用WWW或者UnityWebRequest,如果稍微复杂的使用,可以使用RestSharp库。所以我们本章主要讨论的是xlua-...
  • H 'content-length: 68' \ -d '{ "username": "test_1620546615", "password": "123456" }' postman 支持的语言和框架 Language Framework C LibCurl C# RestSharp cURL cURL Dart Dart Go http package HTTP (Raw ...
  • postman使用教程,接口自动化测试

    千次阅读 2018-10-29 16:53:41
    Java 语言 其他各种语言 还支持其他各种语言: 目前支持的语言有: HTTP C (LibCurl) cURL C#(RestSharp) Go Java OK HTTP Unirest Javascript NodeJS Objective-C(NSURL) OCaml(Cohttp) PHP Python Ruby(NET::Http)...
  • C#(RestSharp) Go Java OK HTTP Unirest Javascript NodeJS Objective-C(NSURL) OCaml(Cohttp) PHP Python Ruby(NET::Http) Shell Swift(NSURL) 代码生成工具的好处是...
  • 介绍 在本文中,我们使用JWT 身份验证在 ASP.NET Core 中构建安全的 REST API 。我们从 JWT 的本质及其结构开始。 文章的第 1 - 4 节 解释了什么是 JWT 令牌、如何使用 .Net Core 设置它、安装所需的包、创建应用...
  • 为什么子线程中不能直接更新UI

    千次阅读 2019-12-05 11:48:28
    关于http请求的库,microsoft封装的库在命名空间System.NET.Http,这里演示的是第三方的http请求库RestSharp,你可以在nuget上添加引用。 [ Activity(Label = "Xamarin_android" , MainLauncher = true, Icon = "@...
  • .NET轻松写博客园爬虫

    2019-09-23 06:30:06
    的测试系列教程,确实是大佬! 结语 实际应用的爬虫可能不像博客园这么简单,爬虫如果深入,可以遇到很多很多非常有意思的情况。 今天谨希望通过这个简单的博客园爬虫,让大家多多享受写 .NET / C# 代码的乐趣...
  • WSDL是一个W3C标准,是一种Web服务描述语言,它通常被用来描述SOAP服务器提供的服务的详情。虽然WSDL具有灵活的服务绑定选项(例如,服务可以通过SMTP邮件服务器提供),但是它原先并没有支持GET和POST等 ...
  • 《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。 希望本文所...
  • QT 开源类库集合

    千次阅读 2020-08-25 15:18:45
    看一下“ 设置”和“ 基本绘图”教程以开始使用。 QCustomPlot可以导出为各种格式,例如矢量化的PDF文件和光栅化的图像(如PNG,JPG和BMP)。QCustomPlot是用于在应用程序内部显示实时数据以及为其他媒体生成高质量...
  • .NET之盛派微信SDK简单操作

    千次阅读 2021-06-09 00:02:41
    image.png 通过VS2019(好想尽快体验VS2022)新建一个.Net5 WebApi程序 安装组件 为了方便(偷懒),我直接使用了postman生成的RestSharp请求代码,因此装了该包。 添加配置 //CO2NET "SenparcSetting": { "IsDebug":...
  • VS2019新建WINFORM程序,NuGet下载安装2个组件RestSharp(Rest类库)、Newtonsoft.Json(JSON类库)。 DEMO的效果和代码如下: using System; using System.Collections.Generic; using System.ComponentModel; ...
  • 直接抛出我的结论:手工做业务类测试,没有前途。 个人建议赶紧从业务测试跳出来,立即学习代码,走自动化... 自动化测试进阶:已上岸华为,涨薪20K,2022最适合自学的python自动化测试教程,自己花16800买的,无偿分享
  • REST Web Services in Windows Phone 7 (With RestSharp) Using the ASP.NET Membership Provider and Authentication Service from Windows Phone 7 PhoneGap for Windows Phone 7 Windows Phone 7 ...
  • 因此,您可以使用诸如 REST Assured(Java),fetch(JavaScript)和 RestSharp(.NET)之类的库。 06 Gmail、电子邮件和Facebook登录 您不应该通过UI自动化的另一种情况是Gmail,电子邮件和Facebook登录。不建议...
  • 展开 文章地址 C# 服务端篇之实现RestFul Service开发(简单实用)...C# 客户端篇之实现Restful Client开发(RestSharp帮助类)https://www.cnblogs.com/xuliangxing/p/8746277.html HttpClienthtt...
  • (全网首发)C#通过Rest接口访问WinCC(1)

    千次阅读 2021-02-26 08:26:58
    HwLib(慧兰博)技术团队专注于高端自动化技术,如果您对我们的技术教程感兴趣的话,可以X宝上搜索店铺“hwlib”或者“慧兰博” 关于HwLib(慧兰博)技术团队的更多信息:www.hwlib.com.cn HwLib(慧兰博)技术团队技术...
  • SqlSugar

    2021-04-28 01:10:19
    使用T4模板教程 步骤1 创建T4模板 ,一定要自已新建,把T4代码复制进去,好多人因为用我现成的T4报错(原因不明) 点击添加文 ... 开源网站.NETMVC+ Layui+SqlSugar+RestSharp SugarSite一个前端支持移动端的企业网站,...
  • WebApi访问教程总是会遇到一些小朋友反复在问api的调用问题1、后端webapi写法2、前端restsharp调用 总是会遇到一些小朋友反复在问api的调用问题 每次做项目总有小朋友会在问我的api怎么访问不了,你帮我看看吧,所以...
  • CShell + Masuit.Tools =》多功能工具箱 CShell + HslCommunication =》 Modbus、Serial、Profinet 等 工控行业通讯协议调试工具箱 CShell + RestSharp =》 WebApi调试工具箱 CShell + DynamicExpresso =》 灵活又...
  • 内容包括:库、工具、框架、模板引擎、身份认证、数据库、ORM框架、图片处理、文本处理、机器学习、日志、代码分析、教程等。 Github地址:https://github.com/GeekPowerFelixSun,[awesome-dotnet-core] 其中的...

空空如也

空空如也

1 2 3
收藏数 55
精华内容 22
热门标签
关键字:

restsharp教程