我有一个RESTful Web应用程序,它支持一组项目上的多个排序字段.是否有将这些排序字段编码到URL的查询字符串中的通用约定?我正在考虑如下模式:
http://myapp.com/books?sort=author:asc,datepublished:desc&count=12
Run Code Online (Sandbox Code Playgroud)
这将按作者排序书籍集合,然后按发布日期排序.
基本上,我需要一种方便的方法,使我的查询字符串中的名称 - 值对具有自己的名称 - 值对.我也需要为上面的例子做一些与过滤器参数类似的事情.
Rails或ASP.NET MVC有这样的模式吗?是否有其他框架已经建立了处理此问题的方法?我宁愿使用熟悉的格式而不是自己的格式.
我也更喜欢使用尽可能少的URL百分比编码的格式.
我已经看到了类似的问题,但并不是我正在寻找的......忘记这样做的智慧,是否有可能做到这一点?...
/object/update/123?o=section # ==> route to SectionController#update
/object/update/456?o=question # ==> route to QuestionController#update
Run Code Online (Sandbox Code Playgroud)
......如果是的话,怎么办呢?
我正在使用Backbone.js和jQuery-mobile.jQuery-mobile routing被禁用,我只使用lib进行UI.除了选择页面转换外,我完成了所有工作.我需要将页面转换('slice-up','fade','slide-down')传递给Backbone路由器,因为转换是根据用户来自何处而变化的.
我已经想出了一个非常难看的方法,通过url传递它们:
class App.Routers.Foods extends Backbone.Router
routes:
'': 'index'
':transition': 'index'
'foods/new': 'new'
'foods/new/:transition': 'new'
initialize: ->
@collection = new App.Collections.Foods()
@collection.fetch()
index: (transition)->
view = new App.Views.FoodIndex(collection: @collection)
App.changePage(view, transition)
new: (transition)->
view = new App.Views.FoodNew(collection: @collection)
App.changePage(view, transition)
Run Code Online (Sandbox Code Playgroud)
这是默认转换的html链接:
<a href="#" data-icon="back" class="ui-btn-left">Back</a>
Run Code Online (Sandbox Code Playgroud)
这是淡入淡出过渡的html链接:
<a href="#fade" data-icon="back" class="ui-btn-left">Back</a>
Run Code Online (Sandbox Code Playgroud)
使用查询字符串,即/ food/new?transition ='fade'肯定更好,但我不知道如何定义骨干路由以使用查询字符串变量.
我该怎么做?
是否有一种更优雅的方式来处理我的问题,即传递变量而不使用url?
我正在从一个页面重定向到另一个页面,另一个重定向从第二页到第三页.我从第一页获得的信息在第二页上没有使用但必须转移到第三页.是否可以将第三页的URL及其查询字符串作为查询字符串发送到第二页.这是一个例子:
Response.Redirect("MyURL1?redi=MyURL2?name=me&ID=123");
Run Code Online (Sandbox Code Playgroud)
我的问题是,作为查询字符串发送的URL有两个查询字符串变量,那么系统如何知道&之后的内容是第二个URL的第二个变量而不是第一个URL的第二个变量?谢谢.
我想知道你是否通常大写查询字符串中的任何字母,使用破折号或下划线表示变量名,或者有任何其他查询字符串命名约定.我找不到任何参考.
编辑:由于似乎没有惯例,是否有任何最佳做法或通常的方法来做到这一点?
刚刚注意到在OAuth2中,当请求的授权类型为:"code"时,回调在查询字符串参数中包含它(在'?'之后).但是,当授权是"令牌"时,它将作为片段传递(在'#'之后).
这看起来是规范的一部分(http://tools.ietf.org/html/draft-ietf-oauth-v2-26#section-4.2)
这样的决定背后可能有什么理由?
谢谢,彼得
不知道有人能指出我正确的方向.我想要实现的是分割一个基于它的字符串,其中包含一个'/'.例如,如果我在代码(c#)中有:www.site.com/course/123456/216,我希望能够在代码中拆分字符串,以便可以将123456分配给变量param1,将216分配给param2 (当然是页面的'友好'名称).如果我要在字符串上添加第三个'/',我希望它成为param3等等.
理想情况下,我希望能够将此代码放在某个地方,我可以将其包含在我需要它工作的任何用户控件中.
是否有可能结合起来query_string,并bool query在filter query?
例如 -
{
"filter": {
"query_string": {
"query": "field:text"
}
},
"bool": {
"should": {
"match": {
"field": "text"
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 我是Angular2的新手.我有一个JSON对象,如下所示:
var options = {
param1: "parama1",
param2: "parama2",
param3: "parama3"
};
Run Code Online (Sandbox Code Playgroud)
应转换为查询字符串并附加到外部URL以重定向页面,如下所示:
ngOnInit(){
window.location.href = someurl?param1=param1¶m2=param2¶m3=param3;
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种方法将其转换为查询字符串.在JQuery $.param()和AngularJS $httpParamSerializerJQLike()中都有这个.我搜索过,但我一无所获.我想知道有没有办法在angular2中做到这一点.
我正在研究 NextJs 版本13.0.2和 ReactJs 版本18.2.0。我想在 URL 中传递查询字符串,但我得到:
Error: Invariant: attempted to hard navigate to the same URL /@workamirdanesh?w=true http://localhost:3000/@workamirdanesh?w=true
Run Code Online (Sandbox Code Playgroud)
当我访问http://localhost:3000/@workamirdaneshURL 时一切正常。但是当我添加像这样的查询字符串:?w=true并且它变成:时http://localhost:3000/@workamirdanesh?w=true,我收到上述错误。
我该如何解决它以及这里的问题是什么?显然,查询字符串不应该抛出错误,并且应该使用查询字符串之前的 URL 加载页面。
更新:我更新了 NextJs 版本13.0.7,问题仍然存在。
query-string ×10
url ×4
c# ×2
angular ×1
asp.net ×1
backbone.js ×1
booleanquery ×1
format ×1
formatting ×1
fragment ×1
javascript ×1
json ×1
lucene ×1
next.js ×1
oauth-2.0 ×1
reactjs ×1
routes ×1
typescript ×1
url-routing ×1