提问人:Hack-R 提问时间:10/16/2014 最后编辑:Hack-R 更新时间:10/16/2014 访问量:564
使用 GET 将 HTML 搜索框参数化为查询 API
Parametrize HTML Search Box to Query API with GET
问:
我有一个 API,它作为给定的搜索输入和 API 密钥返回搜索结果。JSON
我想创建一个搜索框,将关键字提交到 API 并返回结果。
我正在使用这个代码模板:
<!DOCTYPE html>
<html>
<head>
<title>Search Box Example 1</title>
<meta name="ROBOTS" content="NOINDEX, NOFOLLOW" />
<!-- CSS styles for standard search box -->
<style type="text/css">
#tfheader{
background-color:#c3dfef;
}
#tfnewsearch{
float:right;
padding:20px;
}
.tftextinput{
margin: 0;
padding: 5px 15px;
font-family: Arial, Helvetica, sans-serif;
font-size:14px;
border:1px solid #0076a3; border-right:0px;
border-top-left-radius: 5px 5px;
border-bottom-left-radius: 5px 5px;
}
.tfbutton {
margin: 0;
padding: 5px 15px;
font-family: Arial, Helvetica, sans-serif;
font-size:14px;
outline: none;
cursor: pointer;
text-align: center;
text-decoration: none;
color: #ffffff;
border: solid 1px #0076a3; border-right:0px;
background: #0095cd;
background: -webkit-gradient(linear, left top, left bottom, from(#00adee), to(#0078a5));
background: -moz-linear-gradient(top, #00adee, #0078a5);
border-top-right-radius: 5px 5px;
border-bottom-right-radius: 5px 5px;
}
.tfbutton:hover {
text-decoration: none;
background: #007ead;
background: -webkit-gradient(linear, left top, left bottom, from(#0095cc), to(#00678e));
background: -moz-linear-gradient(top, #0095cc, #00678e);
}
/* Fixes submit button height problem in Firefox */
.tfbutton::-moz-focus-inner {
border: 0;
}
.tfclear{
clear:both;
}
</style>
</head>
<body>
<!-- HTML for SEARCH BAR -->
<div id="tfheader">
<form id="tfnewsearch" method="get" action="http://www.google.com">
<input type="text" class="tftextinput" name="q" size="21" maxlength="120"><input type="submit" value="search" class="tfbutton">
</form>
<div class="tfclear"></div>
</div>
</body>
</html>
在语言中(我比 HTML 更了解),我可以成功提交查询并使用以下行捕获结果:R
test <- GET(url="https://api.domain.com/store/data/unique_indentifier/_query?input/search_query=BLACK%20BOX&_user_unique_indentifier&_apikey=xxxxxx/MZgI01RVu+fI6x/cd+riqIpg==")
然而,我不清楚如何弥合两者之间的差距。这意味着,我不知道如何从 R 中获取我的非参数化 GET 查询示例,并将其调整为参数化良好的 HTML Google 搜索示例。
在上面的查询中,我选择了“黑匣子”作为任意搜索词。实际查询可以是 1 个或多个单词,大写或小写。
答:
0赞
hrbrmstr
10/16/2014
#1
假设它是“构建参数列表”,也许是这样的。我将使用 httpbin.org 服务,它将吐回 JSON 中发布的内容:get
library(httr)
pg <- GET("http://httpbin.org/get",
query=list(search="word1 word2 word3",
someoption="param2",
anotheroption="param3"), verbose())
## -> GET /get?search=word1%20word2%20word3&someoption=param2&anotheroption=param3 HTTP/1.1
## -> User-Agent: curl/7.30.0 Rcurl/1.95.4.3 httr/0.5
## -> Host: httpbin.org
## -> Accept-Encoding: gzip
## -> accept: application/json, text/xml, */*
## ->
## <- HTTP/1.1 200 OK
## <- Access-Control-Allow-Credentials: true
## <- Access-Control-Allow-Origin: *
## <- Content-Type: application/json
## <- Date: Wed, 15 Oct 2014 21:39:15 GMT
## <- Server: gunicorn/18.0
## <- Content-Length: 522
## <- Connection: keep-alive
## <-
ret <- content(pg, as="parsed")
str(ret)
## List of 4
## $ args :List of 3
## ..$ anotheroption: chr "param3"
## ..$ search : chr "word1 word2 word3"
## ..$ someoption : chr "param2"
## $ headers:List of 6
## ..$ Accept : chr "application/json, text/xml, */*"
## ..$ Accept-Encoding: chr "gzip"
## ..$ Connection : chr "close"
## ..$ Host : chr "httpbin.org"
## ..$ User-Agent : chr "curl/7.30.0 Rcurl/1.95.4.3 httr/0.5"
## ..$ X-Request-Id : chr "f2d9f3d9-320c-4a00-99a5-b89adc64ad26"
## $ origin : chr "132.177.197.105"
## $ url : chr "http://httpbin.org/get?search=word1 word2 word3&someoption=param2&anotheroption=param3"
只需构建一个参数列表并将其传递给 。GET
评论
0赞
Hack-R
10/16/2014
谢谢,但我不是想在 R 中这样做,因为我正在尝试制作一个带有搜索框的网站。我在 R 中展示了 GET() 示例,因为我更熟悉 are,所以我知道如何在那里执行 GET(),但我试图使该 HTML 搜索框与 R 中 GET() 查询中的信息一起使用。我刚刚删除了 R 标签,这可能具有误导性。
评论
GET
GET