As funções de lógica de requisição retornam atributos da requisição atual, como endereços do servidor e do cliente, localização do cliente, URI da requisição e cabeçalhos. As seções a seguir descrevem a sintaxe, os parâmetros, exemplos de código e o valor de retorno de cada função.
Índice de funções
A tabela a seguir lista as funções de lógica de requisição por categoria, o valor retornado por cada função e os parâmetros aceitos.
|
Categoria |
Função |
Retorno |
Parâmetros |
|
Atributos do servidor |
|
Endereço do servidor que recebeu a requisição atual. |
Nenhum |
|
Atributos do servidor |
|
Porta do servidor que recebeu a requisição atual. |
Nenhum |
|
Atributos do cliente |
|
Endereço IP do cliente. |
Nenhum |
|
Atributos do cliente |
|
Porta do cliente. |
Nenhum |
|
Geolocalização do cliente |
|
Código do país ou região do endereço IP do cliente. |
Nenhum |
|
Geolocalização do cliente |
|
Código da divisão administrativa (província ou cidade) do endereço IP do cliente. |
Nenhum |
|
Geolocalização do cliente |
|
Código da cidade do endereço IP do cliente. |
Nenhum |
|
Geolocalização do cliente |
|
Código do ISP do endereço IP do cliente. |
Nenhum |
|
Geolocalização de um endereço IP específico |
|
Código do país ou região do endereço IP especificado. |
|
|
Geolocalização de um endereço IP específico |
|
Código da divisão administrativa (província ou cidade) do endereço IP especificado. |
|
|
Geolocalização de um endereço IP específico |
|
Código da cidade do endereço IP especificado. |
|
|
Geolocalização de um endereço IP específico |
|
Código do ISP do endereço IP especificado. |
|
|
Análise de URI |
|
URI da requisição, excluindo os parâmetros de consulta. |
|
|
Análise de URI |
|
Nome do arquivo na URI da requisição. |
|
|
Análise de URI |
|
Extensão do arquivo na URI da requisição. |
|
|
Análise de URI |
|
Segmentos da URI da requisição, divididos por barras ( |
|
|
Análise de URI |
|
Valor de um parâmetro de URI específico. |
|
|
Análise de URI |
|
Parâmetros de consulta da requisição, excluindo o ponto de interrogação ( |
|
|
Linha de requisição e cabeçalhos |
|
Esquema da requisição. |
|
|
Linha de requisição e cabeçalhos |
|
Método da requisição. |
|
|
Linha de requisição e cabeçalhos |
|
Valor do cabeçalho de requisição |
|
|
Linha de requisição e cabeçalhos |
|
Valor do cabeçalho de requisição |
|
|
Linha de requisição e cabeçalhos |
|
Valor do cabeçalho de requisição |
|
|
Linha de requisição e cabeçalhos |
|
Valor de um cookie específico. |
|
|
Linha de requisição e cabeçalhos |
|
Primeiro endereço no cabeçalho de requisição |
|
|
Linha de requisição e cabeçalhos |
|
Valor de um cabeçalho de requisição específico. |
|
|
Identificador da requisição |
|
ID da requisição atual. |
Nenhum |
Considerações
A limitação a seguir se aplica a nove funções neste tópico: client_addr, client_country, client_region, client_city, client_isp, ip_country, ip_region, ip_city e ip_isp.
Se políticas de NAT de rede do provedor de service de Internet (ISP) modificarem o endereço do cliente, ou se o endereço IP não estiver na biblioteca de endereços IP da CDN, o valor de retorno real dessas funções será afetado. Use essas funções com cautela.
Correspondência de padrões
Funções cuja sintaxe inclui [pattern] aceitam um parâmetro opcional pattern. Ao especificar pattern, a função compara o valor lido com pattern e retorna um resultado booleano em vez do próprio valor.
pattern oferece suporte a dois modos de correspondência:
Correspondência exata — Compara o valor com
patternquanto à igualdade. Este é o modo padrão. Use-o para verificar um único valor fixo.Correspondência por expressão regular — Usa
patterncomo uma expressão regular, prefixada comre:. Use este modo para corresponder a um conjunto de valores.
Atributos do servidor
server_addr e server_port leem atributos do servidor que recebeu a requisição atual.
server_addr
server_addr lê o endereço do servidor que recebeu a requisição atual.
Sintaxe —
server_addr()Parâmetros — Nenhum.
Valor de retorno — Retorna o endereço do servidor. Tipo de dados: string.
O exemplo a seguir mostra como usar server_addr:
s_addr = server_addr()
say(concat('s_addr:', s_addr))
server_port
server_port lê a porta do servidor que recebeu a requisição atual.
Sintaxe —
server_port()Parâmetros — Nenhum.
Valor de retorno — Retorna a porta do servidor. Tipo de dados: numérico.
O exemplo a seguir mostra como usar server_port:
s_port = server_port()
say(concat('s_port:', tostring(s_port)))
Atributos do cliente
client_addr e client_port leem o endereço e a porta do cliente que enviou a requisição atual.
client_addr
client_addr lê o endereço IP do cliente. Para ler o primeiro endereço no cabeçalho de requisição X-Forwarded-For, use req_first_x_forwarded.
Sintaxe —
client_addr()Parâmetros — Nenhum.
Valor de retorno — Retorna o endereço IP do cliente. Tipo de dados: string. Para uma limitação de precisão aplicável a
client_addr, consulte Considerations.
O exemplo a seguir mostra como usar client_addr:
c_addr = client_addr()
say(concat('c_addr:', c_addr))
client_port
client_port lê a porta do cliente.
Sintaxe —
client_port()Parâmetros — Nenhum.
Valor de retorno — Retorna a porta do cliente. Tipo de dados: numérico.
O exemplo a seguir mostra como usar client_port:
c_port = client_port()
say(concat('c_port:', tostring(c_port)))
Geolocalização do cliente
As funções de geolocalização client_* leem os códigos de localização do cliente que enviou a requisição atual. Para resolver um endereço IP fornecido por você, utilize as funções ip_*.
Para uma limitação de precisão aplicável a essas funções, consulte Considerations.
client_country
client_country lê o código do país ou região do endereço IP do cliente.
Sintaxe —
client_country()Parâmetros — Nenhum.
Valor de retorno — Retorna o código do país ou região do endereço IP do cliente. Tipo de dados: string. Para códigos de países e regiões, consulte Country codes.
O exemplo a seguir mostra como usar client_country:
c_country = client_country()
if c_country {
say(concat('client_country:', c_country))
}
client_region
client_region lê o código da divisão administrativa (província ou cidade) do endereço IP do cliente.
Sintaxe —
client_region()Parâmetros — Nenhum.
Valor de retorno — Retorna o código da divisão administrativa (província ou cidade) do endereço IP do cliente. Tipo de dados: string. Para códigos de divisões administrativas, consulte Administrative division codes.
O exemplo a seguir mostra como usar client_region:
c_region = client_region()
if c_region {
say(concat('client_region:', c_region))
}
client_isp
client_isp lê o código do ISP do endereço IP do cliente.
Sintaxe —
client_isp()Parâmetros — Nenhum.
Valor de retorno — Retorna o código do ISP do endereço IP do cliente. Tipo de dados: string. Para códigos de ISP, consulte ISP codes.
O exemplo a seguir mostra como usar client_isp:
c_isp = client_isp()
if c_isp {
say(concat('client_isp:', c_isp))
}
Geolocalização de um endereço IP específico
As funções ip_* leem os códigos de localização do endereço IP passado em ipaddr. Para resolver o cliente que enviou a requisição atual, utilize as funções de geolocalização client_*.
Para uma limitação de precisão aplicável a essas funções, consulte Considerations.
ip_region
ip_region lê o código da divisão administrativa (província ou cidade) de um endereço IP especificado.
Sintaxe —
ip_region(ipaddr)Parâmetros —
ipaddr: uma string de endereço IP em notação decimal pontuada.Valor de retorno — Retorna o código da divisão administrativa (província ou cidade) do endereço IP especificado. Tipo de dados: string. Para códigos de divisões administrativas, consulte Administrative division codes.
O exemplo a seguir mostra como usar ip_region:
c_region = ip_region('192.168.0.1')
if c_region {
say(concat('ip_region:', c_region))
}
ip_isp
ip_isp lê o código do ISP de um endereço IP especificado.
Sintaxe —
ip_isp(ipaddr)Parâmetros —
ipaddr: uma string de endereço IP em notação decimal pontuada.Valor de retorno — Retorna o código do ISP do endereço IP especificado. Tipo de dados: string. Para códigos de ISP, consulte ISP codes.
O exemplo a seguir mostra como usar ip_isp:
c_isp = ip_isp('192.168.0.1')
if c_isp {
say(concat('ip_isp:', c_isp))
}
Análise de URI
As funções a seguir leem partes individuais da URI da requisição, como o caminho, o nome do arquivo, a extensão do arquivo, os segmentos de caminho, um parâmetro de URI e a string de consulta.
req_uri
req_uri lê a URI da requisição, excluindo os parâmetros de consulta.
Sintaxe —
req_uri([pattern])Parâmetros —
pattern: o padrão usado para correspondência. Para os modos de correspondência suportados, consulte Pattern matching.-
Valor de retorno
Sem
pattern: retorna a URI da requisição. Tipo de dados: string.Com
pattern: retornatruese a correspondência for bem-sucedida, oufalsese falhar. Tipo de dados: booleano.
O exemplo a seguir mostra como usar req_uri:
# req_uri
say(concat('req_uri: ', req_uri()))
if req_uri('/path1/path2') {
say('req_uri: plain match')
}
if req_uri('re:/path[0-9]/path[0-9]') {
say('req_uri: regex match')
}
Este exemplo retorna o seguinte resultado:
Request: /path1/path2?mode=ip
Response:
req_uri: /path1/path2
req_uri: plain match
req_uri: regex match
req_uri_basename
req_uri_basename lê o nome do arquivo na URI da requisição.
Sintaxe —
req_uri_basename([pattern])Parâmetros —
pattern: o padrão usado para correspondência. Para os modos de correspondência suportados, consulte Pattern matching.-
Valor de retorno
Sem
pattern: retorna o nome do arquivo na URI da requisição. Tipo de dados: string.Com
pattern: retornatruese a correspondência for bem-sucedida, oufalsese falhar. Tipo de dados: booleano.
Os exemplos a seguir mostram qual parte da URI da requisição corresponde ao nome do arquivo:
Para
/document_detail/30360.html, o nome do arquivo é30360.Para
/M604/guopei_mp4/ZYJY2017BJGL0101/2-1_g.mp4, o nome do arquivo é2-1_g.Para
/tarball/foo.tar.bz2, o nome do arquivo éfoo.
O exemplo a seguir mostra como usar req_uri_basename:
# req_uri_basename
basename = req_uri_basename()
say(concat('req_uri_basename: ', basename, ' ', len(basename)))
if req_uri_basename('foo') {
say('req_uri_basename: plain match')
}
if req_uri_basename('re:^f.*') {
say('req_uri_basename: regex match')
}
Este exemplo retorna o seguinte resultado:
Request: /path1/path2/foo.tar.bz2
Response:
req_uri_basename: foo 3
req_uri_basename: plain match
req_uri_basename: regex match
req_uri_ext
req_uri_ext lê a extensão do arquivo na URI da requisição.
Sintaxe —
req_uri_ext([pattern])Parâmetros —
pattern: o padrão usado para correspondência. Para os modos de correspondência suportados, consulte Pattern matching.-
Valor de retorno
Sem
pattern: retorna a extensão do arquivo na URI da requisição. Tipo de dados: string.Com
pattern: retornatruese a correspondência for bem-sucedida, oufalsese falhar. Tipo de dados: booleano.
Os exemplos a seguir mostram qual parte da URI da requisição corresponde à extensão do arquivo:
Para
/document_detail/30360.html, a extensão do arquivo é.html.Para
/M604/guopei_mp4/ZYJY2017BJGL0101/2-1_g.mp4, a extensão do arquivo é.mp4.Para
/tarball/foo.tar.bz2, a extensão do arquivo é.tar.bz2.
O exemplo a seguir mostra como usar req_uri_ext:
# req_uri_ext
ext = req_uri_ext()
say(concat('req_uri_ext: ', ext, ' ', len(ext)))
if req_uri_ext('.tar.bz2') {
say('req_uri_ext: plain match')
}
if req_uri_ext('re:\.tar\.bz[0-2]') {
say('req_uri_ext: regex match')
}
Este exemplo retorna o seguinte resultado:
Request: /path1/path2/foo.tar.bz2
Response:
req_uri_ext: .tar.bz2 8
req_uri_ext: plain match
req_uri_ext: regex match
req_uri_seg
req_uri_seg divide a URI da requisição em segmentos usando barras (/).
Um segmento pode conter até 128 caracteres. O conteúdo que exceder esse limite será descartado.
Sintaxe —
req_uri_seg([idx])Parâmetros —
idx(opcional): especifique o índice inicial. Os índices dos segmentos começam em 1 e aumentam a partir do início da URI da requisição, da esquerda para a direita.-
Valor de retorno
Sem
idx: retorna um dicionário contendo todos os segmentos. Tipo de dados: dicionário.Com
idx: retorna um dicionário contendo os segmentos a partir do índice especificado, incluindo o segmento nesse índice. Tipo de dados: dicionário.
Ao obter um segmento em um índice específico do dicionário retornado, verifique se o segmento está vazio.
O exemplo a seguir mostra como usar req_uri_seg:
# req_uri_seg
def echo_each(k, v, u) {
say(concat(get(u, 'msg'), ' : segs[', k, ']=', v))
}
# fetch all segments
segs = req_uri_seg()
foreach(segs, echo_each, ['msg'='req_uri_seg()'])
# fetch segments from idx 3
segs = req_uri_seg(3)
if get(segs, 3) {
say(concat('req_uri_seg(3): segs[3]=', get(segs, 3)))
}
if get(segs, 4) {
say(concat('req_uri_seg(3): segs[4]=', get(segs, 4)))
}
if get(segs, 5) {
say(concat('req_uri_seg(3): segs[5]=', get(segs, 5)))
}
Este exemplo retorna o seguinte resultado:
Request: /path1/path2/path3/path4?mode=req2
Response:
req_uri_seg() : segs[1]=path1
req_uri_seg() : segs[2]=path2
req_uri_seg() : segs[3]=path3
req_uri_seg() : segs[4]=path4
req_uri_seg(3): segs[3]=path3
req_uri_seg(3): segs[4]=path4
req_uri_arg
req_uri_arg lê o valor de um parâmetro de URI específico.
Sintaxe —
req_uri_arg(name, [pattern])-
Parâmetros
name: o nome do parâmetro.pattern: o padrão usado para correspondência. Para os modos de correspondência suportados, consulte Pattern matching.
-
Valor de retorno
-
Sem
pattern:O parâmetro existe: retorna o valor em string do parâmetro especificado por
name. Tipo de dados: string.O parâmetro não existe: retorna
false.
-
Com
pattern:O parâmetro existe: executa a correspondência e retorna
truese for bem-sucedida, oufalsese falhar. Tipo de dados: booleano.O parâmetro não existe: retorna
false.
-
O exemplo a seguir mostra como usar req_uri_arg:
# req_uri_arg
uid = req_uri_arg('uid')
if uid {
say(concat('found uid ', uid))
} else {
say('not found uid')
}
uid_chk = req_uri_arg('uid', '058334')
if uid_chk {
say('check uid ok. plain mode')
} else {
say('check uid fail. plain mode')
}
uid_chk = req_uri_arg('uid', 're:[0-9]+')
if uid_chk {
say('check uid ok. regex mode')
} else {
say('check uid fail. regex mode')
}
Este exemplo retorna os seguintes resultados:
Request: /path1/path2/path3/path4?mode=req4&uid
Response:
not found uid
check uid fail. plain mode
check uid fail. regex mode
Request: /path1/path2/path3/path4?mode=req4&uid=
Response:
found uid
check uid fail. plain mode
check uid fail. regex mode
Request: /path1/path2/path3/path4?mode=req4&uid=12345
Response:
found uid 12345
check uid fail. plain mode
check uid ok. regex mode
req_uri_query_string
req_uri_query_string lê os parâmetros de consulta da requisição, excluindo o ponto de interrogação (?).
Sintaxe —
req_uri_query_string([pattern])Parâmetros —
pattern: o padrão usado para correspondência. Para os modos de correspondência suportados, consulte Pattern matching.-
Valor de retorno
Sem
pattern: retorna os parâmetros de consulta da requisição. Tipo de dados: string.Com
pattern: retornatruese a correspondência for bem-sucedida, oufalsese falhar. Tipo de dados: booleano.
O exemplo a seguir mostra como usar req_uri_query_string:
# req_uri_query_string
say(concat('req_uri_query_string: ', req_uri_query_string()))
if req_uri_query_string('mode=') {
say('check uri query string ok. plain mode')
} else {
say('check uri query string fail. plain mode')
}
if req_uri_query_string('re:mode=[0-9a-z]+') {
say('check uri query string ok. regex mode')
} else {
say('check uri query string fail. regex mode')
}
Este exemplo retorna o seguinte resultado:
Request: /path1/path2/path3/path4?mode=req5&token=34Deasd#243
Response:
req_uri_query_string: mode=req5&token=34Deasd
check uri query string fail. plain mode
check uri query string ok. regex mode
Linha de requisição e cabeçalhos
As funções a seguir leem os atributos da linha de requisição, os valores dos cabeçalhos de requisição e os valores dos cookies da requisição atual.
req_scheme
req_scheme lê o esquema da requisição.
Sintaxe —
req_scheme([pattern])Parâmetros —
pattern: o padrão usado para correspondência. Para os modos de correspondência suportados, consulte Pattern matching.-
Valor de retorno
Sem
pattern: retorna o esquema da requisição. Tipo de dados: string.Com
pattern: retornatruese a correspondência for bem-sucedida, oufalsese falhar. Tipo de dados: booleano.
O exemplo a seguir mostra como usar req_scheme:
# req_scheme
say(concat('req_scheme: ', req_scheme()))
if req_scheme('https') {
say('check scheme ok. plain mode')
} else {
say('check scheme fail. plain mode')
}
if req_scheme('re:https?') {
say('check scheme ok. regex mode')
} else {
say('check scheme fail. regex mode')
}
Este exemplo retorna o seguinte resultado:
Request: http://xx..
Response:
req_scheme: http
check scheme fail. plain mode
check scheme ok. regex mode
req_method
req_method lê o método da requisição.
Sintaxe —
req_method([pattern])Parâmetros —
pattern: o padrão usado para correspondência. Para os modos de correspondência suportados, consulte Pattern matching.-
Valor de retorno
Sem
pattern: retorna o método da requisição. Tipo de dados: string.Com
pattern: retornatruese a correspondência for bem-sucedida, oufalsese falhar. Tipo de dados: booleano.
O exemplo a seguir mostra como usar req_method:
# req_method
say(concat('req_method: ', req_method()))
if req_method('GET') {
say('check method ok. plain mode')
} else {
say('check method fail. plain mode')
}
if req_method('re:(GET|POST)') {
say('check method ok. regex mode')
} else {
say('check method fail. regex mode')
}
Este exemplo retorna o seguinte resultado:
Request: POST /xxxx/xxx
Response:
req_method: POST
check method fail. plain mode
check method ok. regex mode
req_host
req_host lê o valor do cabeçalho de requisição Host.
Sintaxe —
req_host([pattern])Parâmetros —
pattern: o padrão usado para correspondência. Para os modos de correspondência suportados, consulte Pattern matching.-
Valor de retorno
Sem
pattern: retorna o valor do cabeçalho de requisiçãoHost. Tipo de dados: string.Com
pattern: retornatruese a correspondência for bem-sucedida, oufalsese falhar. Tipo de dados: booleano.
O exemplo a seguir mostra como usar req_host:
# req_host
say(concat('req_host: ', req_host()))
if req_host('image.developer.aliyundoc.com') {
say('check host ok. plain mode')
} else {
say('check host fail. plain mode')
}
if req_host('re:.+\.y\.z\.com') {
say('check host ok. regex mode')
} else {
say('check host fail. regex mode')
}
Este exemplo retorna o seguinte resultado:
Request: Host: image.developer.aliyundoc.com
Response:
req_host: image.developer.aliyundoc.com
check host fail. plain mode
check host ok. regex mode
req_user_agent
req_user_agent lê o valor do cabeçalho de requisição User-Agent.
Sintaxe —
req_user_agent([pattern])Parâmetros —
pattern: o padrão usado para correspondência. Para os modos de correspondência suportados, consulte Pattern matching.-
Valor de retorno
Sem
pattern: retorna o valor do cabeçalho de requisiçãoUser-Agent. Tipo de dados: string.Com
pattern: retornatruese a correspondência for bem-sucedida, oufalsese falhar. Tipo de dados: booleano.
O exemplo a seguir mostra como usar req_user_agent:
# req_user_agent
say(concat('req_user_agent: ', req_user_agent()))
if req_user_agent('Mozilla') {
say('check user_agent ok. plain mode')
} else {
say('check user_agent fail. plain mode')
}
if req_user_agent('re:^Mozilla') {
say('check user_agent ok. regex mode')
} else {
say('check user_agent fail. regex mode')
}
Este exemplo retorna o seguinte resultado:
Request: User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Response:
req_user_agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
check user_agent fail. plain mode
check user_agent ok. regex mode
req_referer
req_referer lê o valor do cabeçalho de requisição Referer.
Sintaxe —
req_referer([pattern])Parâmetros —
pattern: o padrão usado para correspondência. Para os modos de correspondência suportados, consulte Pattern matching.-
Valor de retorno
Sem
pattern: retorna o valor do cabeçalho de requisiçãoReferer. Tipo de dados: string.Com
pattern: retornatruese a correspondência for bem-sucedida, oufalsese falhar. Tipo de dados: booleano.
O exemplo a seguir mostra como usar req_referer:
# req_referer
say(concat('req_referer: ', req_referer()))
if req_referer('https://example.aliyundoc.com/******00003') {
say('check referer ok. plain mode')
} else {
say('check referer fail. plain mode')
}
if req_referer('re:https://foo\.bar\.cn/\*+[0-9]+') {
say('check referer ok. regex mode')
} else {
say('check referer fail. regex mode')
}
Este exemplo retorna o seguinte resultado:
Request: Referer: https://example.aliyundoc.com/******00003
Response:
req_referer: https://example.aliyundoc.com/******00003
check referer ok. plain mode
check referer fail. regex mode
req_first_x_forwarded
req_first_x_forwarded lê o primeiro endereço no cabeçalho de requisição X-Forwarded-For. Para ler o endereço IP do cliente, use client_addr.
Sintaxe —
req_first_x_forwarded([pattern])Parâmetros —
pattern: o padrão usado para correspondência. Para os modos de correspondência suportados, consulte Pattern matching.-
Valor de retorno
Sem
pattern: retorna o primeiro endereço no cabeçalho de requisiçãoX-Forwarded-For. Tipo de dados: string.Com
pattern: retornatruese a correspondência for bem-sucedida, oufalsese falhar. Tipo de dados: booleano.
O exemplo a seguir mostra como usar req_first_x_forwarded:
# req_first_x_forwarded
say(concat('req_first_x_forwarded: ', req_first_x_forwarded()))
if req_first_x_forwarded('203.0.113.1') {
say('check first_x_forwarded ok. plain mode')
} else {
say('check first_x_forwarded fail. plain mode')
}
if req_first_x_forwarded('re:203.0.113.[0-9]') {
say('check first_x_forwarded ok. regex mode')
} else {
say('check first_x_forwarded fail. regex mode')
}
Este exemplo retorna o seguinte resultado:
Request: X-Forwarded-For: 203.0.113.1, 10.10.10.10, 172.16.0.1
Response:
req_first_x_forwarded: 203.0.113.1
check first_x_forwarded ok. plain mode
check first_x_forwarded ok. regex mode
req_header
req_header lê o valor de um cabeçalho de requisição específico.
Sintaxe —
req_header(name, [pattern])-
Parâmetros
name: o nome do cabeçalho de requisição. Substitua cada hífen (-) no nome do cabeçalho de requisição por um sublinhado (_). Por exemplo,X-USER-IDtorna-sex_user_id.pattern: o padrão usado para correspondência. Para os modos de correspondência suportados, consulte Pattern matching.
-
Valor de retorno
-
Sem
pattern:O cabeçalho de requisição existe: retorna o valor em string do cabeçalho de requisição especificado por
name. Tipo de dados: string.O cabeçalho de requisição não existe: retorna
false.
-
Com
pattern:O cabeçalho de requisição existe: executa a correspondência e retorna
truese for bem-sucedida, oufalsese falhar. Tipo de dados: booleano.O cabeçalho de requisição não existe: retorna
false.
-
O exemplo a seguir mostra como usar req_header:
# req_header
uid = req_header('x_uid')
if uid {
say(concat('found header x-uid ', uid))
} else {
say('not found header x-uid')
}
uid_chk = req_header('x_uid', 'es developer')
if uid_chk {
say('check header x-uid ok. plain mode')
} else {
say('check header x-uid fail. plain mode')
}
uid_chk = req_header('x_uid', 're:es [a-z]+')
if uid_chk {
say('check header x-uid ok. regex mode')
} else {
say('check header x-uid fail. regex mode')
}
Este exemplo retorna o seguinte resultado:
Request: X-UID: es developer
Response:
found header x-uid es developer
check header x-uid ok. plain mode
check header x-uid ok. regex mode
Identificador da requisição
A função a seguir lê o ID da requisição atual.
req_id
req_id lê o ID da requisição, que é o identificador exclusivo de cada requisição.
Sintaxe —
req_id()Parâmetros — Nenhum.
Valor de retorno — Retorna o ID da requisição. Tipo de dados: string.
O exemplo a seguir mostra como usar req_id:
# req_id
say(concat('req_id: ', req_id()))
Este exemplo retorna req_id: 6451c43d15815890089411000e.