国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Koa v2.x 中文文檔 請求(Request)

asoren / 2670人閱讀

摘要:別名為設置請求標頭對象。獲取請求路徑名。設置請求路徑名,并在存在時保留查詢字符串。請注意,此不支持嵌套對象。檢查請求緩存是否新鮮,也就是內容沒有改變。通過來檢查請求是否通過發出。返回請求套接字。

請求(Request)

此系列文章的應用示例已發布于 GitHub: koa-docs-Zh-CN. 可以 Fork 幫助改進或 Star 關注更新. 歡迎 Star.

Koa Request 對象是在 node 的 vanilla 請求對象之上的抽象,提供了諸多對 HTTP 服務器開發有用的功能。

API request.header

請求標頭對象。

request.header=

設置請求標頭對象。

request.headers

請求標頭對象。別名為 request.header.

request.headers=

設置請求標頭對象。別名為 request.header=.

request.method

請求方法。

request.method=

設置請求方法,對于實現諸如 methodOverride() 的中間件是有用的。

request.length

返回以數字返回請求的 Content-Length,或 undefined

request.url

獲取請求 URL.

request.url=

設置請求 URL, 對 url 重寫有用。

request.originalUrl

獲取請求原始URL。

request.origin

獲取URL的來源,包括 protocolhost

ctx.request.origin
// => http://example.com
request.href

獲取完整的請求URL,包括 protocolhosturl

ctx.request.href;
// => http://example.com/foo/bar?q=1
request.path

獲取請求路徑名。

request.path=

設置請求路徑名,并在存在時保留查詢字符串。

request.querystring

根據 ? 獲取原始查詢字符串.

request.querystring=

設置原始查詢字符串。

request.search

使用 ? 獲取原始查詢字符串。

request.search=

設置原始查詢字符串。

request.host

獲取當前主機(hostname:port)。當 app.proxytrue 時支持 X-Forwarded-Host,否則使用 Host

request.hostname

存在時獲取主機名。當 app.proxytrue 時支持 X-Forwarded-Host,否則使用 Host

如果主機是 IPv6, Koa 解析到
WHATWG URL API,
注意 這可能會影響性能。

request.URL

獲取 WHATWG 解析的 URL 對象。

request.type

獲取請求 Content-Type 不含參數 "charset"。

const ct = ctx.request.type;
// => "image/png"
request.charset

在存在時獲取請求字符集,或者 undefined

ctx.request.charset;
// => "utf-8"
request.query

獲取解析的查詢字符串, 當沒有查詢字符串時,返回一個空對象。請注意,此 getter 支持嵌套解析。

例如 "color=blue&size=small":

{
  color: "blue",
  size: "small"
}
request.query=

將查詢字符串設置為給定對象。 請注意,此 setter 支持嵌套對象。

ctx.query = { next: "/login" };
request.fresh

檢查請求緩存是否“新鮮”,也就是內容沒有改變。此方法用于 If-None-Match / ETag, 和 If-Modified-SinceLast-Modified 之間的緩存協商。 在設置一個或多個這些響應頭后應該引用它。

// 新鮮度檢查需要狀態20x或304
ctx.status = 200;
ctx.set("ETag", "123");

// 緩存是好的
if (ctx.fresh) {
  ctx.status = 304;
  return;
}

// 緩存是陳舊的
// 獲取新數據
ctx.body = await db.find("something");
request.stale

相反與 request.fresh.

request.protocol

返回請求協議,“https” 或 “http”。當 app.proxytrue 時支持 X-Forwarded-Proto

request.secure

通過 ctx.protocol == "https" 來檢查請求是否通過 TLS 發出。

request.ip

請求遠程地址。 當 app.proxytrue 時支持 X-Forwarded-Proto

request.ips

X-Forwarded-For 存在并且 app.proxy 被啟用時,這些 ips 的數組被返回,從上游 - >下游排序。 禁用時返回一個空數組。

request.subdomains

將子域返回為數組。

子域是應用程序主域之前主機的點分隔部分。默認情況下,應用程序的域名假定為主機的最后兩個部分。這可以通過設置 app.subdomainOffset 來更改。

例如,如果域名為“tobi.ferrets.example.com”:

如果 app.subdomainOffset 未設置, ctx.subdomains["ferrets", "tobi"].
如果 app.subdomainOffset 是 3, ctx.subdomains["tobi"].

request.is(types...)

檢查傳入請求是否包含 Content-Type 頭字段, 并且包含任意的 mime type
如果沒有請求主體,返回 null
如果沒有內容類型,或者匹配失敗,則返回 false
反之則返回匹配的 content-type。

// 使用 Content-Type: text/html; charset=utf-8
ctx.is("html"); // => "html"
ctx.is("text/html"); // => "text/html"
ctx.is("text/*", "text/html"); // => "text/html"

// 當 Content-Type 是 application/json 時
ctx.is("json", "urlencoded"); // => "json"
ctx.is("application/json"); // => "application/json"
ctx.is("html", "application/*"); // => "application/json"

ctx.is("html"); // => false

例如,如果要確保僅將圖像發送到給定路由:

if (ctx.is("image/*")) {
  // 處理
} else {
  ctx.throw(415, "images only!");
}
內容協商

Koa的 request 對象包括由 accepts 和 negotiator 提供的有用的內容協商實體。

這些實用程序是:

request.accepts(types)

request.acceptsEncodings(types)

request.acceptsCharsets(charsets)

request.acceptsLanguages(langs)

如果沒有提供類型,則返回 所有 可接受的類型。

如果提供多種類型,將返回最佳匹配。 如果沒有找到匹配項,則返回一個false,你應該向客戶端發送一個406 "Not Acceptable" 響應。

如果接收到任何類型的接收頭,則會返回第一個類型。 因此,你提供的類型的順序很重要。

request.accepts(types)

檢查給定的 type(s) 是否可以接受,如果 true,返回最佳匹配,否則為 falsetype 值可能是一個或多個 mime 類型的字符串,如 application/json,擴展名稱如 json,或數組 ["json", "html", "text/plain"]

// Accept: text/html
ctx.accepts("html");
// => "html"

// Accept: text/*, application/json
ctx.accepts("html");
// => "html"
ctx.accepts("text/html");
// => "text/html"
ctx.accepts("json", "text");
// => "json"
ctx.accepts("application/json");
// => "application/json"

// Accept: text/*, application/json
ctx.accepts("image/png");
ctx.accepts("png");
// => false

// Accept: text/*;q=.5, application/json
ctx.accepts(["html", "json"]);
ctx.accepts("html", "json");
// => "json"

// No Accept header
ctx.accepts("html", "json");
// => "html"
ctx.accepts("json", "html");
// => "json"

你可以根據需要多次調用 ctx.accepts(),或使用 switch:

switch (ctx.accepts("json", "html", "text")) {
  case "json": break;
  case "html": break;
  case "text": break;
  default: ctx.throw(406, "json, html, or text only");
}
request.acceptsEncodings(encodings)

檢查 encodings 是否可以接受,返回最佳匹配為 true,否則為 false。 請注意,您應該將identity 作為編碼之一!

// Accept-Encoding: gzip
ctx.acceptsEncodings("gzip", "deflate", "identity");
// => "gzip"

ctx.acceptsEncodings(["gzip", "deflate", "identity"]);
// => "gzip"

當沒有給出參數時,所有接受的編碼將作為數組返回:

// Accept-Encoding: gzip, deflate
ctx.acceptsEncodings();
// => ["gzip", "deflate", "identity"]

請注意,如果客戶端顯式地發送 identity;q=0,那么 identity 編碼(這意味著沒有編碼)可能是不可接受的。 雖然這是一個邊緣的情況,你仍然應該處理這種方法返回 false 的情況。

request.acceptsCharsets(charsets)

檢查 charsets 是否可以接受,在 true 時返回最佳匹配,否則為 false

// Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5
ctx.acceptsCharsets("utf-8", "utf-7");
// => "utf-8"

ctx.acceptsCharsets(["utf-7", "utf-8"]);
// => "utf-8"

當沒有參數被賦予所有被接受的字符集將作為數組返回:

// Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5
ctx.acceptsCharsets();
// => ["utf-8", "utf-7", "iso-8859-1"]
request.acceptsLanguages(langs)

檢查 langs 是否可以接受,如果為 true,返回最佳匹配,否則為 false

// Accept-Language: en;q=0.8, es, pt
ctx.acceptsLanguages("es", "en");
// => "es"

ctx.acceptsLanguages(["en", "es"]);
// => "es"

當沒有參數被賦予所有接受的語言將作為數組返回:

// Accept-Language: en;q=0.8, es, pt
ctx.acceptsLanguages();
// => ["es", "pt", "en"]
request.idempotent

檢查請求是否是冪等的。

request.socket

返回請求套接字。

request.get(field)

返回請求標頭。

如果這篇文章對您有幫助, 感謝 下方點贊 或 Star GitHub: koa-docs-Zh-CN 支持, 謝謝.

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/89475.html

相關文章

  • Koa v2.x 中文文檔

    摘要:的對象提供了用于處理響應的方法,該響應委托給。應用對象是與的服務器和處理中間件注冊的接口,從發送到中間件,默認錯誤處理,以及上下文,請求和響應對象的配置。 此系列文章的應用示例已發布于 GitHub: koa-docs-Zh-CN. 可以 Fork 幫助改進或 Star 關注更新. 歡迎 Star. showImg(https://segmentfault.com/img/bVNQYf...

    Cobub 評論0 收藏0
  • Koa v2.x 中文文檔 上下文(Context)

    摘要:方法拋出一個屬性默認為的錯誤,這將允許做出適當地響應。這用于修飾其人機友好型錯誤并向上游的請求者報告非常有用。請注意,不支持使用此功能。這可能會破壞中間件和本身的預期功能。 上下文(Context) 此系列文章的應用示例已發布于 GitHub: koa-docs-Zh-CN. 可以 Fork 幫助改進或 Star 關注更新. 歡迎 Star. Koa Context 將 node 的 ...

    Arno 評論0 收藏0
  • Koa v2.x 中文文檔 響應(Response)

    摘要:每當流被設置為響應主體時,作為偵聽器自動添加到事件中以捕獲任何錯誤。不區分大小寫獲取響應標頭字段值。例如這是一個中間件,可以削減除流之外的所有響應。檢查是否已經發送了一個響應頭。設置包含包裹的響應,請注意,沒有相應的。 此系列文章的應用示例已發布于 GitHub: koa-docs-Zh-CN. 可以 Fork 幫助改進或 Star 關注更新. 歡迎 Star. 響應(Response...

    khlbat 評論0 收藏0
  • Koa v2.x 中文文檔 常見問題

    摘要:常見問題此系列文章的應用示例已發布于可以幫助改進或關注更新歡迎替代它更像是,但是很多的好東西被轉移到的中間件級別,以幫助形成更強大的基礎。這使得中間件對于整個堆棧而言不僅僅是最終應用程序代碼,而且更易于書寫,并更不容易出錯。 常見問題 此系列文章的應用示例已發布于 GitHub: koa-docs-Zh-CN. 可以 Fork 幫助改進或 Star 關注更新. 歡迎 Star. Koa...

    Paul_King 評論0 收藏0
  • Koa v2.x 中文文檔 API

    此系列文章的應用示例已發布于 GitHub: koa-docs-Zh-CN. 可以 Fork 幫助改進或 Star 關注更新. 歡迎 Star. 相關 API 上下文(Context) 請求(Request) 響應(Response) 安裝 Koa 依賴 node v7.6.0 或 ES2015及更高版本和 async 方法支持. 你可以使用自己喜歡的版本管理器快速安裝支持的 node 版本:...

    mikasa 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<