当前位置:  开发笔记 > 后端 > 正文

REST URL所需的建议将提供给第三方访问我的网站

如何解决《RESTURL所需的建议将提供给第三方访问我的网站》经验,为你挑选了1个好方法。

重要提示:这个问题实际上并不是一个ASP.NET问题.任何对URL都有所了解的人都可以回答.我恰好使用ASP.NET路由,因此包含了这个细节.

简而言之,我的问题是:

"我应该设计哪种URL格式,我可以让外部各方到达我的网站上的特定位置,以便将来证明.[我是创建这些'REST'网址的新手]."


我需要一个ASP.NET路由URL,该URL将提供给第三方用于跟踪营销活动.它本质上是一个"网关"URL,可将用户重定向到我们网站上的特定页面,该页面可能是主页,特殊竞赛或特定产品.

除了试图捕捉的引荐我将需要接受PARTNERID,竞选号码和其他可能的参数.我想提供一个这样做的路线,但我想第一次就把它弄好,因为很明显,一旦外部使用它,我就不能轻易改变它.

这样的事情怎么样?

routes.MapRoute(
   "3rd-party-campaign-route",
   "campaign/{destination}/{partnerid}/{campaignid}/{custom}",
   new
   {
       controller = "Campaign",
       action = "Redirect",
       custom = (string)null // optional so we need to set it null 
   }
); 

广告系列:可能不希望在实际链接中使用"广告系列"一词 - 因为用户会在网址栏中看到它.我可能会把它变成像'c'这样神秘的东西.

destination:指示我们网站上链接将用户带到哪个页面.例如PR将用户引导到产品页面.

partnerid:我们分配的公司的ID - 例如堆栈溢出的SO.

campaignid:广告系列ID,例如123 - 每个合作伙伴都是唯一的.我已经意识到,我认为我希望第三方公司能够自己管理广告系列ID,而不是我们提供一个网站来"制作广告系列".虽然我还不完全确定.

自定义:自定义数据(可选).我可以在不破坏现有URL的情况下添加更多自定义数据参数

注意:我有"目的地"的原因是因为广告系列ID是由客户决定的,因此他们还需要告诉我们该广告系列的目的地在哪里.或者,他们可以"注册"我们的活动.这可能是一个更好的解决方案,以避免人们放入随机的广告系列ID,但我并不过分担心,我认为这个系统提供了更大的灵活性.

此外,我们想知道他们用来链接我们的图像(因此我们可以跟踪哪个横幅效果最好).我认为这是一个新的竞选活动,而不是自定义数据领域,但我不确定.

目前我使用的是非常原始的URL,例如http://example.com?cid=123.在这种情况下,广告系列ID需要发布给第三方,它不是一个非常灵活的系统.我想立即转向新客户的新系统.

关于未来打样这个系统的任何想法?我可能错过了什么?我知道我总是可以添加新格式,但如果这是一个好主意我想尽可能多地使用这种格式.



1> Craig Stuntz..:

这个网址:

"campaign/{destination}/{partnerid}/{campaignid}/{custom}",

...对我来说看起来不像是一个资源,它看起来像一个远程方法调用.这里有很多业务逻辑,可能会在未来发生变化.而且,它很复杂.设计URL时我的直觉就是更简单一些.将URL交给外部合作伙伴时,这会加倍.

统一资源定位器应该指定资源.目的地当然是一种资源(但稍后会更多关注这一点),我认为您可以将该活动视为一种资源.合作伙伴不是您所服务的资源.Custom当然不是资源,因为它完全未定义.

我听说你不想告诉合作伙伴"制作一个广告系列",但是考虑到你最终可能不得不走这条路.只要广告系列具有合作伙伴标识符以外的任何属性,您就必须执行此操作.

因此,我的第一个结论是,您应该摆脱合作伙伴ID,并从广告系列中获取.如果有必要,也可以删除自定义,并使用查询字符串参数.使用查询字符串参数来指定如何返回资源(而不是资源的标识)是合适的.

去除这些产量:

"campaign/{destination}/{campaignid}",

好的,这更简单,但看起来仍然不对.广告系列和广告系列ID之间的目的地是什么?一种方法是重新安排事情:

"campaign/{campaignid}/{destination}",

另一种方法是使用Astoria风格的索引:

"campaign({campaignid})/{destination}",

出于某种原因,对许多人来说这看起来很奇怪,但这完全合法.您可以随意使用其他合法字符将广告系列与ID分开; 这里的要点是a /不是唯一的选择,可能不是合适的选择.

然而...

我们尚未涉及的一个问题是,如果/当用户提交有效目的地,但无效的广告系列或合作伙伴ID时会发生什么.如果正确的响应是用户应该看到错误,那么上述所有内容仍然有效.另一方面,如果正确的响应是用户应该静默地被带到目标页面,那么广告系列ID实际上是查询字符串参数,而不是资源的一部分.也许有些合作伙伴不喜欢给出带有问号的URL,但从纯粹的REST角度来看,我认为这是正确的方法,如果广告系列ID的有效性无法确定用户的最终位置.在这种情况下,URL将是:

"campaign/{destination}",

...并且您将添加包含广告系列ID的查询字符串参数.

我意识到我没有给你一个明确的答案.麻烦的是,大多数情况都取决于您可能已经意识到的业务因素,但我当然不是.因此,我更倾向于涵盖REST-ful URL的理念,而不是试图向您解释您的业务.:)

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有