.net 建议删除斜杠的编码,我可以将其用作REST样式URL参数的格式

.net 建议删除斜杠的编码,我可以将其用作REST样式URL参数的格式,.net,php,rest,encoding,decoding,.net,Php,Rest,Encoding,Decoding,给定REST样式URL的路径: http://site.com/rest/customer/foo/robot/bar/1 当您得到它时,它会将一个PDF返回给foo客户,其中包含bar URL的第1页 foo是客户的名称,而bar是一个URL。URL通常包含斜杠,可能如下所示: http://anothersite.com/interestingarticle.html 由于RESTURL的参数是用斜杠分开的,所以我不能把它放在上面的RESTURL中。我应该使用哪种编码?我不能使用Base

给定REST样式URL的路径:

http://site.com/rest/customer/foo/robot/bar/1
当您得到它时,它会将一个PDF返回给foo客户,其中包含bar URL的第1页

foo是客户的名称,而bar是一个URL。URL通常包含斜杠,可能如下所示:

http://anothersite.com/interestingarticle.html
由于RESTURL的参数是用斜杠分开的,所以我不能把它放在上面的RESTURL中。我应该使用哪种编码?我不能使用Base 64,因为它也使用斜杠


作为技术说明,我将在.NET应用程序中对URL进行编码,并在PHP中对其进行解码。

您的用例到底是什么?为什么酒吧需要是一个URL?服务器可以按照任何方式构造URI

如果出于某种原因必须使用URL,请执行以下操作:


(当然是URL编码的查询字符串)。

通过对URL进行双URL编码,它将不会包含任何斜杠,因此可能会使用斜杠分隔的参数

URL使用C#编码并从.NET发送:

接收PHP脚本对URL进行双重解码:

url = decode(decode($receivedDoubleEncodedUrl));

谢谢你的回答!我的用例没有创建PDF。但我必须通过REST发送一个URL,这样示例才有效。您的方式不允许使用其他参数进一步深入URL。而且它不符合创建URL的REST风格。为什么你说我的方式不允许额外的参数?顺便说一句:没有“创建URL的REST样式”这样的东西。我显示的URL只是一个完全有效的URL(当然除了QS中未显示的URL编码)。我认为应该创建URL,以便添加更多参数以进一步深入选择。也许事实并非如此。使用这种样式,我将无法在URL之后添加更多参数,这正是我想要做的。使用某种编码。您可以将任意数量的查询参数附加到我的示例URI。例如,您可以附加&a=1&b=2。如果您需要使用URI路径层次结构,您可以使用矩阵参数,但您的示例看起来并不需要。矩阵参数的形式为/foo/a=1;b=2/巴/。。。并具有不“停止”层次结构的属性。你可以在参数后使用路径段来表示进一步的深入。是的,我想你的方法是可行的。不过,我非常喜欢使用斜杠分隔的参数。这就是我看到的所有其他例子。
url = decode(decode($receivedDoubleEncodedUrl));