http - 在 Prolog 中处理 PWP HTML 页面内的 http 查询字符串

标签 http prolog swi-prolog

我目前正在做一个项目,需要一些用 Prolog 编写的 Web 应用程序,我选择使用著名的 SWI-Prolog PWP 库。它在 HTML 文件中解析 带有 prolog 查询的脚本

我有一个响应以下请求示例的页面:

/user?id=N

其中 N 是一个整数值。

但是我无法读取 HTML 文件中请求的查询字符串 ID

我有 .pl 文件:

showUser(UserId, Request) :- 
    reply_pwp_file(mydir('user_page.html'), [mime_type('text/html')], Request).

我不知道如何读取 UserIdRequest 以再次检索查询字符串中的 UserId。

我在 HTML 标记中尝试过这种方式:

<span pwp:ask="http_parameters(Request, [id(UserId, [optional(true)])])." pwp:use="UserId" />

以前有人遇到过这种麻烦吗?

非常感谢。

这里有一些可能对我们有帮助的有趣链接:

最佳答案

我花了一些时间,但至少我已经能够运行我在 ~/pl-devel/packages/http/examples 中找到的 demo_pwp.pl。现在,之后

?- server(1234).

我打开网址

http://localhost:1234/user_id.pwp?user_id=1&user_name=carlo

我在 ~/pl-devel/packages/http/examples/pwp/user_id.pwp 文件中写的地方

<?xml version="1.0"?>
<!DOCTYPE html>

<html xmlns:pwp="http://www.cs.otago.ac.nz/staffpriv/ok/pwp.pl">

<head>
  <title>Context variables for PWP scripts</title>
</head>
<body>
  <p>This PWP demo lists the context-parameters that are passed into
     the script.
  </p>
  <ul>
    <li pwp:ask="member(Name=Value, CONTEXT)">
      <span class=name pwp:use="Name"/>
      =
      <span class=value pwp:use="writeq(Value)"/>
    </li>
  </ul>
  <!-- here is the specific part for my answer -->
  <p pwp:ask="memberchk('QUERY'=Q, CONTEXT),memberchk(user_id=UID,Q),memberchk(user_name=NAME,Q)">
     UID : <span pwp:use="UID"/> / NAME : <span pwp:use="NAME"/>
  </p>
  <!-- nested access is well thought -->
  <p pwp:ask="member('QUERY'=Q,CONTEXT)">
     UID : <span pwp:use="UID" pwp:ask="member(user_id=UID,Q)"/>
   / NAME : <span pwp:use="NAME" pwp:ask="member(user_name=NAME,Q)"/>
  </p>
</body>

</html>

(这是 context.pwp 的副本,在底部添加了我的信息) 我得到了

This PWP demo lists the context-parameters that are passed into the script.
...    
-   QUERY = [user_id='1',user_name=carlo]
...    
UID : 1 / NAME : carlo 
UID : 1 / NAME : carlo 

然后我可以确认 Giulio 建议的指南是可以的。

关于http - 在 Prolog 中处理 PWP HTML 页面内的 http 查询字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15887958/

相关文章:

http - 打包的 cookie 应该被视为单个 cookie 吗?

HTTP接受协商算法

rest - ResourceNotFound,找不到资源组 '...' 下的资源 Microsoft.DataFactory/factories/...

http - 示例 http 范围请求 session

prolog - 制作适用于 GNU 和 SWI 的 Prolog 代码

prolog - Predsort/3 就像 msort/2

prolog - 给定值 x 和 y 如果为真则返回规则名称

list - 将数字列表拆分为对列表列表

crash - 程序使SWI Prolog控制台崩溃

prolog - SWI 序言 : How to view a pre-built predicate code?