您如何访问球拍服务器应用程序中的获取参数
How do you access get parameters in racket server application
我的编程语言组织课程中有一个项目,我正在使用 Racket 构建网络 API。我已经成功启动了一个服务器 运行,它有多个登录页面,例如
localhost:8080/api/add
localhost:8080/api/subtract
我是 Racket 的新手,过去刚刚使用 PHP 来处理通过 URL 传递的 GET 参数。
比如...
localhost:8080/api/add/?num1=1&num2=3
num1 将由 PHP 和
访问
$_GET[ 'num1' ] ;
这在 Racket 中应该如何完成?我没有在 Racket 文档中找到任何显示等效方法的内容。我的最终意图是传递 JSON 字符串作为 GET 参数 json
localhost:8080/api/add/?json={ some json }
假设您正在使用 Web Application in Racket。
Servlet 过程接收请求对象并且它包含那些绑定。您可以通过 request-bindings
过程检索它,其中 returns 绑定列表。 4 HTTP: Hypertext Transfer Protocol 部分描述了如何访问请求对象。
好的,我在
中找到了解决方案
POST/GET bindings in Racket
本质上是为了得到
localhost:8080/api/add/?json={ some json }
你会用
(bytes->string/utf-8
(binding:form-value
(bindings-assq (string->bytes/utf-8 "[field_name_here]")
(request-bindings/raw req))))
现在这回答了我的问题,但让我 运行 在搜索的绑定不存在时进入异常,所以我决定采取额外的步骤并执行存在性检查。在 PHP 我想执行类似...
<?php
function get_param_as_string( $param ) {
if ( isset( $_GET[ $param ] ) )
return $_GET[ $param ] ;
return "" ;
}
?>
所以我创建了球拍程序
(define (get-param->string req param)
(if (eq? #f (bindings-assq (string->bytes/utf-8 param)
(request-bindings/raw req)))
""
(bytes->string/utf-8
(binding:form-value
(bindings-assq (string->bytes/utf-8 param)
(request-bindings/raw req))))))
现在如url
问题指定的情况
localhost:8080/api/add/?json={ some json }
以下将检索 json GET 变量(如果存在)或 return ""(如果缺失)。所以...
(get-param->string req "json")
会导致...
{ some json }
和
localhost:8080/api/add/?tmp={ some json }
或
localhost:8080/api/add/
会导致...
""
我的编程语言组织课程中有一个项目,我正在使用 Racket 构建网络 API。我已经成功启动了一个服务器 运行,它有多个登录页面,例如
localhost:8080/api/add
localhost:8080/api/subtract
我是 Racket 的新手,过去刚刚使用 PHP 来处理通过 URL 传递的 GET 参数。
比如...
localhost:8080/api/add/?num1=1&num2=3
num1 将由 PHP 和
访问$_GET[ 'num1' ] ;
这在 Racket 中应该如何完成?我没有在 Racket 文档中找到任何显示等效方法的内容。我的最终意图是传递 JSON 字符串作为 GET 参数 json
localhost:8080/api/add/?json={ some json }
假设您正在使用 Web Application in Racket。
Servlet 过程接收请求对象并且它包含那些绑定。您可以通过 request-bindings
过程检索它,其中 returns 绑定列表。 4 HTTP: Hypertext Transfer Protocol 部分描述了如何访问请求对象。
好的,我在
中找到了解决方案POST/GET bindings in Racket
本质上是为了得到
localhost:8080/api/add/?json={ some json }
你会用
(bytes->string/utf-8
(binding:form-value
(bindings-assq (string->bytes/utf-8 "[field_name_here]")
(request-bindings/raw req))))
现在这回答了我的问题,但让我 运行 在搜索的绑定不存在时进入异常,所以我决定采取额外的步骤并执行存在性检查。在 PHP 我想执行类似...
<?php
function get_param_as_string( $param ) {
if ( isset( $_GET[ $param ] ) )
return $_GET[ $param ] ;
return "" ;
}
?>
所以我创建了球拍程序
(define (get-param->string req param)
(if (eq? #f (bindings-assq (string->bytes/utf-8 param)
(request-bindings/raw req)))
""
(bytes->string/utf-8
(binding:form-value
(bindings-assq (string->bytes/utf-8 param)
(request-bindings/raw req))))))
现在如url
问题指定的情况localhost:8080/api/add/?json={ some json }
以下将检索 json GET 变量(如果存在)或 return ""(如果缺失)。所以...
(get-param->string req "json")
会导致...
{ some json }
和
localhost:8080/api/add/?tmp={ some json }
或
localhost:8080/api/add/
会导致...
""