Lua HTTP介绍

1,098 阅读3分钟

Lua HTTP

Lua HTTP的定义

  • Lua HTTP是一个应用级协议,用于在浏览器上加载和获取万维网应用链接的Lua编程语言。
  • 它是一个超文本传输文本协议,用于在互联网上使用Lua技术传输信息。
  • 它是一个通用协议,使用Lua源代码在网络浏览器的服务器和客户端之间提供高级通信。
  • 它是一个无状态协议,用于灵活的数据传输,检索HTTP数据,并抛出Lua代码的错误。
  • 它对网络服务器的请求和对网络浏览器的响应很有用。

语法。

  • 它有许多模块和方法来与客户和服务器通信。
  • 下面是一些带有解释的Lua HTTP模块信息。
  • Lua HTTP的语法如下。
  • Lua HTTP的客户端请求语法如下。

require "http.request";

  • 例子: local lua_variable_name = require " http.request " 。

new_from_uri("uri link")

  • 例子: local new_variable_name = variable_name.new_from_uri("lua.org/demo")

  • http.request是一个用于客户端请求的高级接口。

  • http.request是使用客户端请求来检索服务器信息的。

  • new_from_uri正在立即获取给定的Lua HTTP链接,并执行该程序。

  • new_from_uri与http.request对象相连,以评估Lua HTTP URI。

Lua HTTP服务器端的语法如下。

require "http.server"

Example: local lua_server = require "http.server"

require "http. headers"

例子:local lua_headers = require "http.headers"

  • http.server是创建对象,用于封装Lua HTTP服务器套接字。
  • 服务器将信息发送到客户端的Lua HTTP。
  • http.headers是Lua HTTP字段名的索引。
  • http.头是敏感数据,通过调用键值来检索。

Lua HTTP头的语法如下。

headers:append(name, value, never_index) headers:each() : status

  • headers: append用于创建和关联头的名称、值和布尔授权。
  • headers: each()用于迭代头文件的值。
  • header ": status" 用于保持字符串格式的值。

Lua HTTP直到语法如下。

require "http.util"

**Example:**local lua_http_variable = require "http.util";

Lua Http紧凑套接字的语法如下。

require "http.compat.socket"

**例如:**local lua_http_variable = require "http.compat.socket"。

这是为了提供Lua HTTP请求的兼容性。

HTTP如何在Lua中工作?

**第一步:**Lua编程IDE环境设置。

根据Lua软件的版本,在你的虚拟机上安装Lua文本编辑器、Lua编译器和Lua解释器。

**第2步:**Lua HTTP环境设置。

安装Lua HTTP帮助与Lua模块的包管理器(luarocks)。

Website name:- https://luarocks.org/

  • 这个经理是自动安装Lua HTTP的依赖性。
  • 下面的命令只是在Lua软件中输入。

$ luarocks install http.

**第三步:**下面的依赖,你应该安装在Lua软件。

    • 基本的依赖是luaossl,basexx,lpeg,lpeg_pattern,二进制堆,fifp,和队列(微软Windows不支持)。
    • 文档压缩的依赖性是 lzlib 和 Lua-zlib。
    • Lua HTTP cookies的依赖性是lua-psl。
    • Lua HTTP测试的依赖性是luacheck、busted和luacov。

**第4步:**用Lua HTTP.请求创建一个变量。

local lua_http_variable= require('http.request');

5步:用Lua new_from_uri(" uri name ") 创建一个变量。

local new_http_variable= lua_http_variable.new_from_uri("http://lua.org/demo")

6步:在Lua HTTP的头文件和蒸汽使用。

for lua_field, lua_value in headers:each() do print(lua_field, lua_value) end local body_http_variable = assert(stream:get_body_as_string())

第7步:返回Lua HTTP要求的数据。

print(body_http_variable)

  • 结合Lua HTTP的工作程序。

local lua_http_variable= require "http.request" local new_http_variable= lua_http_variable .new_from_uri ("http://lua.org/demo") local headers, stream= assert ( new_http_variable:go()); for lua_field, lua_value in headers:each() do print (lua_field, lua_value) end local body_http_variable = assert (stream:get_body_as_string()) print (body_http_variable)

例子

让我们来讨论Lua HTTP的例子。

示例#1:Lua Http客户端服务器的例子和输出。

local lua_http_variable= require "http.request"; local new_http_variable= lua_http_variable .new_from_uri ("http://lua.org/demo") local headers, stream= assert ( new_http_variable:go()); for lua_field, lua_value in headers:each() do print (lua_field, lua_value) end local body_http_variable = assert (stream:get_body_as_string()) print (body_http_variable)

**输出1:**在Lua命令提示符下输入$ cat filename.Lua命令。

lua http 1

**输出2:**在Lua命令提示符下输入$ lua filename.Lua命令。

lua http 2

Example #2: Lua Http客户端服务器与 "if "循环的例子和输出。

local lua_http_variable= require "http.request"; local new_http_variable= lua_http_variable .new_from_uri ("http://lua.org/demo") local headers, stream= assert( new_http_variable:go()); local body_http_variable = assert (stream:get_body_as_string()) if headers : get ":status" ~= "200" then error (body_http_variable) end print (body_http_variable)

输出。

**输出1:**在Lua命令提示符中输入$ cat filename.Lua命令。

lua http 3

**输出2:**在Lua命令提示符下输入$ lua filename.Lua命令。

lua client

例子#3:Lua HTTP服务器端的例子和输出。

local lua_server = require "http.server"; local lua_header = require "http.headers"; local lua_http_server = lua_server.listen { host: "localhost"; port: 8005; onstream: function(sa, sb) local reqst_header = sb:get_headers(), local reqst_method = sb:get(":method") local lua_path = reqst_header:get(":path") or "", local recv_path = headers.new() recv_path:append(":status", "200") recv_path:append("content-type", "text/plain") sb:write_headers(recv_path, reqst_method == "HEAD") if reqst_method ~= "HEAD" then sb:write_chunk(("Received message \n":format(lua_path), true) end end } lua_http_server.listen(); lua_http_server.loop();

**输出1:**该输出显示了Lua HTTP服务器的端口。

lua http 4

**输出2:**该输出显示了Lua HTTP服务器的信息。

received message

例子#4:Lua HTTP with util的例子和输出如下。

第一部分:使用query-args(string)与http.util的例子。

local lua_http_vrblr = require "http.util"; for names, values in lua_http_vrblr.query.args("Lua = language & Lua = http") do print("names, values") end

输出。

output 2

第二部分:使用query-args(string)与http.util的例子。

local lua_http_util = require "http.util" print(lua_http_util.split_authority("lua.org", "https")) print(lua_http_util.split_authority("localhost:8005", "http"))

输出结果。

output 1

Example #5: Lua HTTP with socket的例子和输出如下。

local lua_http_socket = require "http.compat.socket" local bd, dc = assert(lua_http_socket.request("http://google.com")) print(dc, #bd);

输出。

output

结论

  • 它有很多方法来控制服务器和客户端的数据或信息。
  • 它使Lua应用程序变得简单、互动,并在服务器或互联网上受到保护。
  • 它帮助客户端轻松地获得服务器端的信息和保护。