npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

c4restfulclient

v0.0.5

Published

C4Framework RESTFulClient

Downloads

6

Readme

C4RESTFulClient是基于request的封装:

  • 支持Http、Http协议;
  • 支持Cookie;
  • response的stream处理;
  • 支持对Content-Type和Content-Disposition进行Parser的定义,并在接收response时自动选定;
  • 支持GET、POST、PUT、PATCH、DELETE这些METHOD。

配置分为ClientOption和RequestOption:

export interface ClientOption {
    baseURL ?: string,                      // 基地址
    sslOption ?: {                          // SSL的配置项
        cert : Buffer;                      // 证书
        key  : Buffer;                      // 私钥
        passphrase ?: string;               // 证书的密码
        ca ?: string | Buffer | string[] | Buffer[];    // CA
    },
    rejectUnauthorized ?: boolean;          // 是否对证书进行校验(双向验证时需要)
    preambleCRLF ?: boolean;                // 在multipart/form-data请求的边界之前追加/CRLF
    postambleCRLF ?: boolean;               // 在multipart/form-data请求的边界尾部追加/CRLF
    timeout ?: number;                      // 请求超时时间,单位毫秒
    gzip ?: boolean;                        // 是否使用gzip
    cookiesOption ?: {                      // cookie的配置项
        enabled : boolean;                  // 是否开启
        store ?: any;                       // 存储引擎
    };
    downloadPath ?: string;                 // 下载文件的保存目录
};
export interface RequestOption {
    qs ?: { [key : string] : any };             // 请求的查询字符串
    body ?: any;                                // PATCH、POST和PUT请求的实体,必须是Buffer、string或者ReadSteam,如果json项是true,body不许是可序列化的JSON对象
    json ?: boolean;                            // 设置请求实体是否为JSON,会自动在header中增加application/json的Content-Type
    form ?: { [key : string] : any} | string;   // 当传递一个对象或查询字符串时,将body设置为querystring表示的值,并在header中添加application/x-www-form-urlencoded的content-type
    formData ?: { [key : string] : any};        // 传递给multpart/form-data的请求数据
    multipart ?: RequestPart[] | Multipart;     // 用于发送multipart/related的请求数据
    headers ?: Headers;                         // http的headers
    gzip ?: boolean;                            // 是否使用gzip
    cookiesOption ?: {                          // cookie的配置项
        enabled : boolean;                      // 是否开启
        store ?: any;                           // 存储引擎
    };

    // https双向认证
    rejectUnauthorized ?: boolean;              // 是否对证书进行校验(双向验证时需要)
    key ?: Buffer;                              // 私钥
    cert ?: Buffer;                             // 证书
    passphrase ?: string;                       // 证书的密码
    ca?: string | Buffer | string[] | Buffer[]; // CA

    // downloadFileName
    downloadFileName ?: string;                 // 下载文件的保存文件名
}
  • C4RESTFulClient

    • 说明:RESTFul客户端

    • 路径:./src/C4RESTFulClient.ts

    • 成员变量:

      • m_DefaultOption,Client的配置,作为请求的默认配置;
      • m_Logger,日志对象;
      • m_Jar,Cookie;
      • m_ContentTypeParsers,处理特定ContentType的Parser的存储字典,key为Content-Type,value为Parser;
      • m_ContentDispositionParsers,处理特定ContentDisposition的Parser的存储字典,key为ContentDisposition,value为Parser;
      • m_DownloadPath,下载文件保存的目录的路径。
    • 成员方法:

      • init
      /**
      * 初始化
      * @param option ClientOption
      */
      async init(option ?: ClientOption)
      • addParser
      /**
      * 增加Parser
      * @param parser C4RESTFulParser
      */
      addParser(parser : C4RESTFulParser)
      • removeParser
      /**
      * 移除Parser
      * @param name 要移除的Parser的名字
      */
      removeParser(name : string) 
      • request
      /**
      * 请求
      * @param url 请求的URL
      * @param method 请求的METHOD
      * @param option RequestOption
      */
      request(url : string, method : string, option : RequestOption) : Promise<Request.Response>
      • get
      /**
      * GET Method
      * @param url 请求的URL 
      * @param option RequestOption
      */
      get(url : string, option : RequestOption)
      • post
      /**
      * post Method
      * @param url 请求的URL 
      * @param option RequestOption
      */
      post(url : string, option : RequestOption)
      • put
      /**
      * put Method
      * @param url 请求的URL 
      * @param option RequestOption
      */
      put(url : string, option : RequestOption)
      • patch
      /**
      * patch Method
      * @param url 请求的URL 
      * @param option RequestOption
      */
      patch(url : string, option : RequestOption)
      • delete
      /**
      * delete Method
      * @param url 请求的URL 
      * @param option RequestOption
      */
      delete(url : string, option : RequestOption)
  • C4RESTFulParser

    • 说明:Parser的接口类

    • 路径:./src/C4RESTFulParser.ts

    • 成员变量:

      • name,Parser的名字;
      • isStream,是否是流式解析器;
      • logger,日志类;
      • contentTypes,对应的Content-Type,可以是数组;
      • contentDispositionTypes,对应的Content-Disposition,可以是数组
    • 成员方法:

      • beforeStream,在请求开始调用,用来开始一些stream处理的准备工作;
      • afterStream,在请求结束时调用,用来处理一些stream的收尾工作;
      • parse,进行数据处理
  • C4DefaultJSONParser

    • 说明:JSON解析器

    • 路径:./src/C4DefaultRESTFulParser/C4DefaultJSONParser.ts

    • 成员变量:

      • name,Parser的名字;
      • isStream,是否是流式解析器;
      • logger,日志类;
      • contentTypes,对应的Content-Type,可以是数组;
    • 成员方法:

      • parse,进行数据处理
  • C4DefaultTextParser

    • 说明:Text解析器

    • 路径:./src/C4DefaultRESTFulParser/C4DefaultTextParser.ts

    • 成员变量:

      • name,Parser的名字;
      • isStream,是否是流式解析器;
      • logger,日志类;
      • contentTypes,对应的Content-Type,可以是数组;
    • 成员方法:

      • parse,进行数据处理
  • C4DefaultXMLParser

    • 说明:XML解析器

    • 路径:./src/C4DefaultRESTFulParser/C4DefaultXMLParser.ts

    • 成员变量:

      • name,Parser的名字;
      • isStream,是否是流式解析器;
      • logger,日志类;
      • contentTypes,对应的Content-Type,可以是数组;
    • 成员方法:

      • parse,进行数据处理
  • C4DefaultFileStreamParser

    • 说明:文件下载解析器

    • 路径:./src/C4DefaultRESTFulParser/C4DefaultFileStreamParser.ts

    • 成员变量:

      • name,Parser的名字;
      • isStream,是否是流式解析器;
      • logger,日志类;
      • downloadPath,下载文件的保存路径;
      • contentDispositionTypes,对应的Content-Disposition,可以是数组
    • 成员方法:

      • beforeStream,在请求开始调用,用来开始一些stream处理的准备工作;
      • afterStream,在请求结束时调用,用来处理一些stream的收尾工作;
      • parse,进行数据处理
  • C4CSVFileStreamParser

    • 说明:CSV文件下载解析器

    • 路径:./src/C4DefaultRESTFulParser/C4CSVFileStreamParser.ts

    • 成员变量:

      • name,Parser的名字;
      • isStream,是否是流式解析器;
      • logger,日志类;
      • downloadPath,下载文件的保存路径;
      • contentTypes,对应的Content-Type,可以是数组;
    • 成员方法:

      • beforeStream,在请求开始调用,用来开始一些stream处理的准备工作;
      • afterStream,在请求结束时调用,用来处理一些stream的收尾工作;
      • parse,进行数据处理