api中文化之Rust-curl(上)

被叫做可兒的逸軒發表於2017-06-06

本文目錄

  • 簡介
  • api
    1. 簡介
    2. easy模組
    3. multi模組

簡介

api中文化系列是為了輔助Rust常用庫翻譯計劃而做的文章,用於簡單整理對應庫的api文件暴露的介面,方便整理後梳理成對應的簡潔的教程。

Rust常用庫翻譯之curl傳送門
Rust翻譯計劃總傳送門

api

1.簡介

該api共提供了兩個模組easy和multi,六個struct和一個函式init。其中基本入口為easy模組。

2.easy模組

模組struct:

  • Auth
  • Easy
  • Form
  • Iter
  • List
  • Part
  • SslOpt
  • Transfer
1.Auth:
函式列表:
  • new:返回一個空的Auth結構體例項,用於接下來的認證操作
  • basic(bool):傳入一個人布林值,設定是否使用基礎http認證方式
  • digest(bool):傳入一個布林值,設定是否使用Digest認證
  • digest_ie(bool):傳入一個布林值,設定是否使用ie風格的Digest認證
  • gssnegotiate(bool):傳入一個布林值,設定是否使用HTTP Negotiate認證
  • ntlm(bool):傳入一個布林值,設定是否使用HTTP NTLM認證
  • ntlm_wb(bool):傳入一個bool值,功能的話,Orz小生沒看懂
例項:
2.Easy:
函式列表:
  • new:返回一個Easy例項,用於接下來的操作
  • verbose(bool):設為true後,控制檯將輸出大量的資訊以供除錯
  • show_header(bool):設為true後返回的資料將攜帶頭資訊
  • progress(bool):是否顯示程式表(未找到設為true後的變化,Orz)
  • signal(bool):Orz,看不懂
  • wildcard_match(bool):是否根據檔名稱匹配傳輸多個檔案,檔案字尾使用fnmatch-like模式匹配
  • write_function(F):接受一個閉包函式作為引數傳入,閉包函式簽名為:F: FnMut(&[u8]) -> Result + Send + 'static, 在請求完成後會呼叫該閉包函式,返回的資料作為引數傳入,注意的是,返回的資料可能量非常大,也有可能小到0
  • read_function(F):接受一個閉包函式作為引數,函式簽名等同上文write_function(F),不同的是,該回撥是在請求上傳檔案完成後呼叫
  • seek_function(F):待定
  • progress_function(F):待定
  • ssl_ctx_function(F):待定
  • debug_function(F):待定
  • header_function(F):待定
  • fail_on_error(bool):接受一個布林值,指定是否在http返回的code>400直接fail
  • url(&str):接受一個字串引用,指定要訪問的url
  • port(u16): 傳入一個u16整型,指定埠號
  • proxy(&str):接受一個字串引用,指定代理伺服器url
  • proxy_port(u16):接受一個u16整型引數,設定代理伺服器埠號
  • proxy_type(ProxyType):接受一個ProxyType的列舉,用於設定代理型別
  • noproxy(&str):接受一個字串引用,定義一系列的主機列表,這些訪問這些主機時不使用代理,主機之間用逗號分割,可以用*萬用字元
  • http_proxy_tunnel(bool):傳入一個布林值,定義是否通過代理隧道進行所有操作
  • interface(&str):傳入一個字串引用,定義操作繫結哪一個網路介面,可以在這裡指定介面名稱、ip地址或者主機名
  • set_local_port(u16):指示哪個埠應繫結到本地連線。預設是0,即任意埠
  • local_port_range(u16):定義系統嘗試查詢可用埠的次數
  • dns_cache_timeout(Duration):傳入標準庫結構體Duration,定義dns解析在記憶體中快取的時間
  • buffer_size(size):傳入usize整型,定義接受緩衝區大小,位元組為單位
  • tcp_nodelay(bool):配置是否定義TCP_NODELAY選項,否則Nagle's algorithm 將會是禁止狀態
  • username(&str):定義認證時的使用的使用者
  • password(&str):定義認證時使用的密碼
  • http_auth(&Auth):傳入一個Auth例項引用,定義http認證方式
  • proxy_username(&str):代理伺服器認證時的使用者名稱
  • proxy_password(&str):代理伺服器認證時的密碼
  • proxy_auth(&Auth):傳入Auth例項引用,定義http代理時的認證方式
  • netrc(netRc):傳入一個列舉netRc,用於配置netrc解析
  • autoreferer(bool):是否自動更新引用頭
  • accept_encoding(&str):啟動http壓縮方式,設定Accept-Encoding頭內容,比如 identity, zlib, and gzip。傳入0長度的字串時會傳送所有可接受編碼
  • transfer_encoding(bool):是否啟用http傳輸編碼
  • follow_location(bool):是否跟隨返回頭中的3xx設定進行重定向
  • unrestricted_auth(bool):配置後,憑證將不止傳送給第一個主機,重定向後的主機也會收到憑證
  • max_redirections(u32):指定最大允許的重定向次數,如果設定為0則拒絕重定向
  • put(bool):設定後將設定傳送PUT請求
  • post(bool):設定後竟會傳送POST請求,並且自動新增Content-Type: application/x-www-form-urlencoded 頭部,攜帶的資料可以通過post_fields指定或者通過設定read function指定
  • post_fields_copy(&[u8]):設定post時攜帶的資料,資料會被複制進該控制程式碼中,如果不需要,則可以選擇使用read callback。
  • post_field_size(u64):配置post中傳輸的資料的大小,自動被呼叫作為post_fields的一部分,並且只有在為read callback提供資料資料時才會被呼叫。所以該選項也是可選的。
  • httppost(Form):傳入一個Struct Form,設定使用multipart/formdata 格式傳輸資料,資料通過Form Struct例項傳入
  • referer(&str):設定引用頭,refer欄位
  • useragent(&str):設定頭部user-agent欄位
  • http_headers(List):傳入一個Struct List,批量設定http頭

  • cookie(&str):傳入字串如“key1=v1;key2=v2”,設定cookie,重複呼叫此函式會覆蓋上次的值

  • cookie_file(AsRef):傳入一個在標準庫trait AsRef處理後的路徑,通過該路徑傳入一個cookie檔案,格式可以時 Netscape / Mozilla的cookie格式,也可以是header裡set-Cookie的格式。同時如果多次呼叫該函式,會附加相應的值
  • cookie_jar(AsRef):傳入一個在標準庫trait AsRef處理後的路徑,通過該路徑傳入一個檔案,在刪除該控制程式碼時libcurl會把cookie寫入該檔案。注:libcurl並不會從該檔案中讀取任何cookie
  • cookie_session(bool):開啟後cookie將會只在每個會話中有效,每次開一個會話時,libcurl不會讀取之前儲存的cookie
  • cookie_list(&str):新增到或操縱儲存在記憶體中的Cookie。這樣的cookie可以是Netscape / Mozilla格式的一行,也可以是常規的HTTP樣式頭(Set-Cookie:...)格式。這也將啟用Cookie引擎。這將單個Cookie新增到內部Cookie儲存。
  • get(bool):啟用將傳送get請求
  • ignore_content_length(bool):是否忽略標頭檔案中的content-length欄位
  • http_content_decoding(bool):是否啟用http content解碼(注:這個選項預設是true)
  • http_transfer_decoding(bool):是否啟用http傳輸解碼(注:這個選項預設是true)
  • range(&str):表示此請求應檢索的範圍。提供的字串應為N-M形式,其中N或M可以被省略。 對於HTTP傳輸,也可以接受以逗號分隔的多個範圍。(這條沒看懂)
  • resume_from(u64):設定一個點,值為一個偏移量,傳輸將從此處恢復繼續(文件是這個說的,具體效果有待考證)
  • custom_request(&str):設定一個自定義的請求字串
  • fetch_filetime(bool):是否獲取遠端資源的修改時間
  • nobody(bool):設定為true後,請求將不會返回body體,這在有時候只是需要獲得頭資訊時蠻有用
  • in_filesize(u64):如果要攜帶檔案上傳,該函式設定檔案尺寸
  • upload(bool):是否允許上傳資料(禁止後將影響上傳相關函式)
  • max_filesize(u64):下載的檔案的最大大小
  • time_condition(TimeCondition):傳入一個列舉TimeCondition,設定一個請求的之間條件,與下一個函式搭配使用。
  • time_value(i64):設定一個時間戳,對應的含義由上一個函式指定
  • timeout(Duration):傳入一個標準庫Struct Duration,設定請求最大等待時間
  • low_speed_limit(u32):設定請求時最最低速度,位元組/秒
  • low_speed_time(Duration):傳入一個標準庫Struct Duration,設定低速限制時間段,在該時間段內速度低於low_speed_limit的視窗將會被關閉
  • max_send_speed(u32):告訴限制,設定最高速度,位元組每秒
  • max_recv_speed(u64):限制下載速度
  • max_connects(u64):設定最大連線快取大小,預設是5,(注:修改此值並無使益處)
  • fresh_connect(bool):是否強制重新建立一個新連線
  • forbid_reuse(bool):設定是否在一個連線使用後立即關閉
  • connect_timeout(Duration):傳入一個標準庫Struct Duration,設定連線階段最大等待時間
  • ip_resolve(IpResolve):傳入列舉IpResolve,指定使用的ip協議版本。
  • connect_only(bool):是否在成功連線主機後就停止。
  • ssl_cert(AsRef):傳入一個在標準庫trait AsRef處理後的路徑,通過該路徑傳入ssl 客戶端的證書
  • ssl_cert_type(&str):設定ssl證書型別
  • ssl_key(AsRef):傳入一個在標準庫trait AsRef處理後的路徑,通過該路徑指定TLS和SSL客戶端證書的私鑰檔案。
  • ssl_key_type(&str):設定ssl_key私鑰型別
  • key_password(&str):設定私鑰密碼
  • ssl_engine(&str):設定ssl引擎識別碼
  • ssl_engine_default(bool):是否將該控制程式碼的ssl引擎設為預設值
  • http_version(HttpVersion):傳入一個列舉HttpVersion,設定http版本
  • ssl_version(SslVersion):傳入一個列舉SslVersion,設定ssl版本
  • ssl_verify_host(bool):是否根據主機驗證ssl名稱,預設為true
  • ssl_verify_host(bool):是否驗證對等主機的ssl證書,預設是true,若要禁止,需非常小心,禁止後幾乎就是禁止了ssl所有安全功能
  • cainfo(AsRef):傳入一個在標準庫trait AsRef處理後的路徑,通過該路徑指定CA包位置
  • issuer_cert(AsRef):傳入一個在標準庫trait AsRef處理後的路徑,通過該路徑指定issuer SSL。
  • capath(AsRef):傳入一個在標準庫trait AsRef處理後的路徑,通過該路徑指定CA證書的資料夾位置
  • crlfile(AsRef):傳入一個在標準庫trait AsRef處理後的路徑,通過該路徑指定證書撤銷列表檔案
  • certinfo(bool):是否請求ssl證書資訊
  • random_file(AsRef):傳入一個在標準庫trait AsRef處理後的路徑,通過該路徑指定ssl用到的隨機數源
  • egd_socket(AsRef):傳入一個在標準庫trait AsRef處理後的路徑,通過該路徑指定EGD socket路徑
  • ssl_cipher_list(&str):指定TLS用到的密碼
  • ssl_sessionid_cache(bool):是否使用ssl的session-id快取
  • ssl_options(&SslOpt):傳入結構體SslOpt,設定ssl相應選項
  • effective_url():該函式返回值簽名為Result
  • effective_url_bytes():該函式返回值簽名為Result
  • response_code():該函式返回值簽名為 Result,返回請求的返回狀態碼
  • http_connectcode():該函式返回值簽名為 Result,返回連線的狀態碼
  • filetime():該函式返回值簽名為 Result,返回檢索到文件的遠端伺服器時間
  • total_time():該函式返回值簽名為 Result,返回傳輸用的總時間
  • namelookup_time():該函式返回值簽名為 Result,返回域名解析所花時間
  • connect_time():該函式返回值簽名為 Result,返回連線伺服器所花時間
  • appconnect_time():該函式返回值簽名為 Result,返回直到SSL/SSH握手花費時間
  • pretransfer_time():該函式返回值簽名為 Result,返回直到開始傳輸時花費的時間
  • starttransfer_time():該函式返回值簽名為 Result,返回直到剛開始收到資料時花費的時間
  • redirect_time():該函式返回值簽名為 Result,返回所有重定向所花費的時間
  • redirect_count():該函式返回值簽名為 Result,返回重定向的次數。
  • redirect_url():該函式返回值簽名為 Result
  • redirect_url_bytes:該函式返回值簽名為 Result
  • header_size():該函式返回值簽名為 Result,返回頭部大小
  • request_size():該函式返回值簽名為 Result,返回請求包大小
  • content_type():該函式返回值簽名為 Result
  • content_type_bytes():該函式返回值簽名為 Result
  • os_errno():該函式返回值簽名為 Result,返回最後一次連線失敗時的錯誤號
  • primary_ip():該函式返回值簽名為 Result
  • primary_port():該函式返回值簽名為 Result,返回最後一次連線的目的埠
  • local_ip():該函式返回值簽名為 Result
  • local_port():該函式返回值簽名為 Result,返回最後一次連線的本地埠
  • cookies():該函式返回值簽名為 Result,返回Cookie列表
  • perform():呼叫該函式後,請求正式發出!!!!!
  • transfer():該函式返回值簽名為Transfer<'easy, 'data>,新建一個Transfer,用於設定回撥函式和資料.
  • unpause_read():取消讀取的暫停狀態
  • unpause_write():取消寫入的暫停狀態
  • url_encode(&[u8]):傳入一個url,返回一個url encode後的String
  • url_decode(&str):傳入一個url,返回一個url decode後的vector
  • reset():重置該控制程式碼所有值為初始值
  • recv(& mut [u8]):返回值簽名為Result,從已經建立連線的socket里拉取資料
  • send(&[u8]):向已經建立連線的socket裡寫入資料
  • raw():返回一個 curl_sys::CURL指標
例項:
  • 實現了Send例項
  • 實現了Drop例項

模組enums:

  • HttpVersion
  • InfoType
  • IpResolve
  • NetRc
  • ProxyType
  • ReadError
  • SeekResult
  • SslVersion
  • TimeCondition
  • WriteError

3.multi模組

詳情見:api中文化之Rust-curl(下)

相關文章