跳转到内容

Ada 编程/库/Web/AWS

来自 Wikibooks,开放世界中的开放书籍

Ada. Time-tested, safe and secure.
Ada. 经久考验,安全可靠。

AWS,Ada Web 服务器,是一个完整的框架,用于开发基于 Web 的应用程序。AWS 的主要部分是嵌入式Web 服务器。这个小巧但功能强大的 Web 服务器可以嵌入到您的应用程序中,使其能够与标准 Web 浏览器进行通信。围绕这个 Web 服务器,开发了许多服务。

AWS 支持SOAPWeb 服务REST架构。

示例代码

[编辑 | 编辑源代码]

Hello World

[编辑 | 编辑源代码]

AWS 的著名 Hello World 演示,一个完整的 Web 服务器,它将为对localhost端口8080的每个请求显示“Hello world!”。

with AWS.Default;
with AWS.Response;
with AWS.Server;
with AWS.Status;

procedure Hello_World is

   WS : AWS.Server.HTTP;

   function HW_CB (Request : AWS.Status.Data) return AWS.Response.Data is
   begin
      return AWS.Response.Build ("text/html", "Hello world !");
   end HW_CB;

begin
   AWS.Server.Start (WS, "Hello World", Callback => HW_CB'Access);

   delay 60.0;

   AWS.Server.Shutdown (WS);
end Hello_World;

设置服务器配置并等待事件

[编辑 | 编辑源代码]

可以使用记录传递服务器的配置参数。还可以使用 AWS 上的内置过程来等待事件。

callbacks.adb

package body Callbacks is

   function HW_CB (Request : AWS.Status.Data) return AWS.Response.Data is
   begin
      return AWS.Response.Build ("text/html", "Hello world !");
   end HW_CB;

end Callbacks;

callbacks.ads

with AWS.Status;
with AWS.Response;

package Callbacks is

   function HW_CB (Request : AWS.Status.Data) return AWS.Response.Data;

end Callbacks;

main.adb

with AWS.Config.Set;
with AWS.Server;

procedure Main is
  use AWS;

  Host : constant String := "localhost";
  Port : constant        := 8080;

  Web_Server : Server.HTTP;
  Web_Config : Config.Object;

begin
   -- Setup

   Config.Set.Server_Host (Web_Config, Host);
   Config.Set.Server_Port (Web_Config, Port);

   -- Start the server

   Server.Start (Web_Server => Web_Server,
                 Callback => Callbacks.HW_CB'Access,
                 Config => Web_Config);

   -- Wait for the Q key

   Server.Wait (Server.Q_Key_Pressed);

   -- Stop the server

   Server.Shutdown (Web_Server);
end Main;

bitcoind JSON-RPC 交互。

bitcoin.adb

with AWS.Client;
with AWS.Headers;
with AWS.Headers.Set;
with AWS.Response;

package body Bitcoin is

   function Get_Wallet_Info return AWS.Response.Data is
      hdrs : AWS.Headers.List := AWS.Headers.Empty_List;
   begin
      AWS.Headers.Set.Add(hdrs, "Content-Type", "text/plain");
      return AWS.Client.Post(URL => "http://127.0.0.1:8332/",
                      Data => "{""jsonrpc"": ""1.0"", ""id"":""test"", ""method"": ""getwalletinfo"", ""params"": []}",
                      User => "bitcoinrpcUSERNAME",
                      Pwd => "bitcoinrpcPASSWORD",
                      Headers => hdrs);
   end Get_Wallet_Info;

end Bitcoin;

通过打开 Bitcoin Core 并点击选项窗口上的对应按钮来创建 bitcoin.conf 文件。以下是示例配置文件。然后重新打开 bitcoin-qt 或启动 bitcoind 守护进程以启动服务器。bitcoin-cli 程序和测试网络可用于测试 RPC 命令。

bitcoin.conf

# Expose the RPC/JSON API
server=1
rpcuser=USERNAME
rpcpassword=PASSWORD

另请参阅

[编辑 | 编辑源代码]

维基百科

[编辑 | 编辑源代码]
[编辑 | 编辑源代码]
项目信息
https://github.com/adacore/aws/
下载
https://github.com/adacore/aws/releases


华夏公益教科书