从开发到测试再到生产的API路径不同.我如何避免在部署之间进行更改
API path different from dev to test to prod. How do I avoid changing between deployments?
. Net WebAPI和javascript/jquery.
我有以下JScript代码:var apiUrl = "/api/myService/myMethod/
$.GetJSON(apiUrl+"/"+myValue).done(function(data){more code here});
在我的开发环境中,这可以正常工作。但是当我将它移动到我们的测试服务器时,它变成了一个web应用程序,位于名为MyApp的子目录中。有没有一种方法告诉javascript去应用程序的根,而不是网站的根?我想避免在字符串前面加上"/MyApp/"
Something lie var test="~/api/myService/myMethod/"
我有以下JScript代码:var apiUrl = "/api/myService/myMethod/
不要有这样的代码。永远不要在ASP中硬编码url。NET MVC应用程序。在处理url时应该始终使用helper。例如,你可以在Layout的全局变量中加入这个:
<script type="text/javascript">
var apiUrl = '@Url.Route("DefaultApi", new { controller = "values", httproute = "" });';
</script>
你无疑注意到httproute = ""
路由参数我用来指示URL助手使用Web API路由,而不是你的MVC路由(这是两个完全不同的东西)。
但在大多数情况下,你甚至不需要它。传递给此$.getJSON
函数的url可以是DOM的一部分。例如,您永远不会像在野外那样调用$.getJSON
函数。通常调用它是为了不显眼地ajax化锚点或表单。所以url可能已经是DOM的一部分了。例如,假设您想要ajax化一个锚。很好,继续写这个锚指向正确的url:
@Html.RouteLink(
"click me",
"DefaultApi",
new { httproute = "", controller = "values", id = "123" },
new { id = "mylink" }
)
很酷,现在把它ajax化:
$(function() {
$('#mylink').click(function() {
$.getJSON(this.href, function(result) {
alert('success');
});
return false;
});
});
看到你如何不再需要硬编码任何url在你的javascript?您只需使用javascript不显眼地增强DOM中已经存在的内容。这是由适当的url帮助器生成的,它能确保根据你的路由定义创建正确的url。这样,你就可以在一个地方(无论你在哪里配置你的路由)改变你的路由模式,你永远不需要担心你的视图。
相关文章:
- 如何将函数包装在函数中以避免代码重复
- 使用CI和CodeDeploy对node.js应用程序进行连续部署
- 部署时使用npm包时发生Meteor错误
- 如果类不是一个选项,如何在使用 jQuery 时控制(避免)嵌套 html 元素的样式
- Typescript angularjs$http获取响应类型(避免使用<any>)
- Dynamics 2016内部部署Crm客户端脚本.选项集控件类型缺少方法
- 避免键入一些特殊字符
- 在JavaScript类型的函数中避免self-this
- 避免在if condition-Javascript中使用函数
- 如何避免在angular上多次调用方法;s ng重复
- PHP REST服务抛出异常——希望避免控制台错误
- “createImageData()”和“new ImageData(()”有何不同
- 当文本不断变化时,如何避免在按钮内移动文本
- 如何避免在树上走两次
- JQuery-在本地工作,但未定义$,仅在部署的站点上定义
- 如何使用按键避免图像闪烁
- 从开发到测试再到生产的API路径不同.我如何避免在部署之间进行更改
- 如何避免在每次创建要部署在glassfish上的新Java EE包时复制整个dojo库
- 避免在每次部署后缓存JS、CSS文件页面
- Java小程序的部署工具包:如何在没有安装JVM的情况下避免重定向