- 主题:问个http的问题
1. 对于GET方法,可以通过query string传递参数
2. 对于POST方法,可以通过url encoded data传递参数,query string好像不行。
感觉这方面知识比较欠缺,http协议有没有什么简单的介绍性的书? 还是说,这种东西
遇到问题google就可以了?
独学而无友,则孤陋而寡闻。 叹~
--
FROM 36.250.66.*
query string 实际上也可以。。
get 方法也可以带 body
怎么玩跟你的服务器以及中间的各种 web cache 有关。比如运营商级别的 cache
【 在 saynothing (止语) 的大作中提到: 】
: 1. 对于GET方法,可以通过query string传递参数
: 2. 对于POST方法,可以通过url encoded data传递参数,query string好像不行。
: 感觉这方面知识比较欠缺,http协议有没有什么简单的介绍性的书? 还是说,这种东西
: ...................
--
修改:hgoldfish FROM 220.160.190.*
FROM 220.160.190.*
我现在感到困惑的是:
(1) 一个简单的搜索功能,比如翻页。 是否浏览记录只需要记下第一次 xxx.com/search
页面,其他的xxx.com/search?page=x就不需要记下了。 如果这样,实现上有何差别
(2) 另外,搜索的内容有变化(因为记录有更新),是否最好不要用GET方法(考虑到搜
索引擎爬虫)。 如果这样paginator翻页的时候,需要修改<a>href为post方法?
以上这些还是零星stackoverflow搜索到的,缺乏整体性的了解。
【 在 hgoldfish (老鱼) 的大作中提到: 】
: query string 实际上也可以。。
: get 方法也可以带 body
: 怎么玩跟你的服务器以及中间的各种 web cache 有关。比如运营商级别的 cache
--
FROM 36.250.66.*
问个问题,就拿这个搜索来说,为什么几行代码就能搞定的事,到了你还有楼上这位嘴里,突然就变得高大上起来?
各种高深词汇有木有。。。
最后还是搜索的问题:
1、get到检索的关键词词(是否对关键词做进一步处理不论)
2、去相关库表检索
3、进行分页处理
对于数据比较小的情况,每次翻页实际1,2,3都是要进行的,只是提取不同的记录。。
对于数据比较多的情况,上述处理就会造成很大的资源浪费,需要另一套处理方式,比如cache,XXX啥的。。
【 在 saynothing 的大作中提到: 】
: 我现在感到困惑的是:
: (1) 一个简单的搜索功能,比如翻页。 是否浏览记录只需要记下第一次 xxx.com/search
: 页面,其他的xxx.com/search?page=x就不需要记下了。 如果这样,实现上有何差别
: ...................
--
FROM 113.205.96.*
POST也可以带query string的。
很多网络框架都会说。
深入学习可以看《HTTP权威指南》。
【 在 saynothing 的大作中提到: 】
: 1. 对于GET方法,可以通过query string传递参数
: 2. 对于POST方法,可以通过url encoded data传递参数,query string好像不行。
: 感觉这方面知识比较欠缺,http协议有没有什么简单的介绍性的书? 还是说,这种东西
: ...................
--
FROM 222.85.138.*
(′・ω・`)
【 在 huaxinjuedui (唐僧哥哥) 的大作中提到: 】
: 问个问题,就拿这个搜索来说,为什么几行代码就能搞定的事,到了你还有楼上这位嘴
里,突然就变得高大上起来?
: 各种高深词汇有木有。。。
: 最后还是搜索的问题:
: ...................
--
FROM 36.250.66.*
还是看代码比较直接:
<form id="search" action="search" onsubmit="return validateForm()"
method="post">
<fieldset>
<div class="query-wrapper">
<div class="item item-query">
<input type="text" class="input input-index"
id="form_query_string" name="query_string" placeholder="xyz"/>
</div>
<div class="item item-submit">
<input type="submit" class="query-btn query-btn-
index" name="submit" value="搜索"/>
</div>
</div>
</fieldset>
</form>
app.post('/search', function(req, res) {
var qry_str = "";
var page_no = 1;
qry_str = req.body.query_string; // 获取到表单字段
// thrift客户端请求数据
thrift_client.get_data(qry_str, page_no, 40, function(err, response) {
var pgr = new Paginator(page_no, total_page);
var html_code = pgr.build(qry_str); // 生成paginator见后面
res.render('search', {paginator_html: html_code, data:
response.data});
});
html_code内容为github style风格的分页浏览:
<div class="pagination">
<a class="previous_page" href="/search?q=sth&p=1"
disabled>Preivous</a>
<em class="current">1</em>
<a href="/search?q=sth&p=2">2</a>
<a href="/search?q=sth&p=3">3</a>
<a href="/search?q=sth&p=4">4</a>
<a href="/search?q=sth&p=5">5</a>
<span class="gap">...</span>
<a href="/search?q=sth&p=63">63</a>
<a href="/search?q=sht&p=64">64</a>
<a class="next_page" href="/search?q=sth&p=2">Next</a>
</div>
这里的问题:
(1) 表单提交数据,转到路由app.post('search/', ...)处理
(2) 分页浏览(paginator)点击页面是,转到路由app.post('search/', ...)处理。
如何让(1), (2)的路由处理一致?
thanks~
【 在 saynothing (止语) 的大作中提到: 】
: (′・ω・`)
: 里,突然就变得高大上起来?
--
修改:saynothing FROM 36.250.66.*
FROM 36.250.66.*
POST 一样可以
curl -X POST url?x=222&y=xxx
curl -X POST -d 'x=222&y=xxx' url
这两个其实解析起来都是一样的
只是在不同的http sever框架里,取参数的具体接口或者参数可能不同
【 在 saynothing (止语) 的大作中提到: 】
: 1. 对于GET方法,可以通过query string传递参数
: 2. 对于POST方法,可以通过url encoded data传递参数,query string好像不
行。
: 感觉这方面知识比较欠缺,http协议有没有什么简单的介绍性的书? 还是说,这种东
西
: ...................
--
FROM 123.125.26.*
你用form 表单发的话,应该可以通过浏览器把发送时产生的url给提取出来,看url和
发送的数据就知道后端怎么处理了。这具体要看你用什么样的后端框架,比如java
spring,jsersey等,接口参数都对参数模式有定义。
【 在 saynothing (止语) 的大作中提到: 】
: 还是看代码比较直接:
: <form id="search" action="search" onsubmit="return
validateForm()"
: method="post">
: ...................
--
FROM 123.125.26.*
《HTTP权威指南》,O'RELLY的动物书
【 在 saynothing (止语) 的大作中提到: 】
: 1. 对于GET方法,可以通过query string传递参数
: 2. 对于POST方法,可以通过url encoded data传递参数,query string好像不行。
: 感觉这方面知识比较欠缺,http协议有没有什么简单的介绍性的书? 还是说,这种东西
: ...................
--
FROM 45.32.21.*