ASP.NET Web API接受AngualrJS的QueryString的两种方式

 

ASP.NET Web API如何接受来自AngualrJS的QueryString呢?本篇体验两种方式。

 

第一种方式:http://localhost:49705/api/products?search=GDN

 

这种方式是QueryString原生的格式。

 

首先,把当前的域名和端口号放到一个自定义的module中去。

 

1 (function () {
2     "use strict";
3 
4     angular.module("custommodule", ["ngResource"])
5         .constant("appSettings", {
6             serverPath: "http://localhost:49705/"
7         });
8 }());

 

以上,依赖ngResource这个module,这个module在angular-resource.js文件中,注意需要引用该文件。

 

接着,通过factory的方式为custommodule创建一个自定义service。

 

(function () {"use strict";//通过工厂的方式创建了一个服务angular.module("custommodule").factory("productResource", ["$resource", "appSettings", productResouce]);function productResouce($resource, appSettings) {return $resource(appSettings.serverPath + "/api/products");}
}());

 

以上,productResource这个服务返回的是经$resource封装的完整的API请求路径。


现在,某个controller需要使用productResource这个服务。

 

(function () {"use strict";angular.module("productManagement").controller("ProductListCtrl",ProductListCtrl);function ProductListCtrl(productResource) {var vm = this;vm.searchCriteria = "GDN";productResource.query({search: vm.searchCriteria},function (data) {vm.products = data;});}
}());

 

以上,从前端传来名称为search的QueryString。

 

后端ASP.NET Web API中,action方法的形参名称必须也是search。

 

public IEnumerable<Product> Get(string search)
{var productRepository = new ProductRepository();var products = productRepository.Retrieve();return products.Where(p => p.ProductCode.Contains(search));
}

 

WebApiConfig类对应的设置为:

 

config.Routes.MapHttpRoute(name: "DefaultApi",routeTemplate: "api/{controller}/{id}",defaults: new { id = RouteParameter.Optional }
);

 

此时,前端是以http://localhost:49705/api/products?search=GDN这种方式请求数据的。

 

如果我们想以http://localhost:49705/api/products/GDN这种方式请求数据呢?

 

 第二种方式:http://localhost:49705/api/products/GDN

 

这种方式需要做一些路由设置。

 

需要让AngularJS知道,在products/后面的这个位置传的值是赋值给search这个QueryString的。

 

也要让ASP.NET Web API知道,当读取products/后面的这个值后,是要赋值给路由中的search这个变量的。

 

如何让AngularJS的路由符合格式呢?

 

function productResouce($resource, appSettings) {return $resource(appSettings.serverPath + "/api/products/:search");
}

 

如何让ASP.NET Web API的路由同AngualrJS对应起来呢?

 

首先,要在路由中允许有search这个QueryString。

 

config.Routes.MapHttpRoute(name: "DefaultApi",routeTemplate: "api/{controller}/{search}",defaults: new { search = RouteParameter.Optional }
);

 

然后,在Action方法中接受search这个QueryString。

 

public IEnumerable<Product> Get(string search)
{var productRepository = new ProductRepository();var products = productRepository.Retrieve();return products.Where(p => p.ProductCode.Contains(search));
}

 

这时候,前端是以http://localhost:49705/api/products/GDN这种方式请求的。


总结:

 

● 如果是想获取默认情况下的QueryString,只需要保证前后段的查询变量一致就好了,比如这里的search
● 如果想获取/等自定义格式下的QueryString,前端AngualrJS需要以类似/api/products/:search这样的方式定义路由,后端ASP.NET Web API中也需要把search作为路由中的一个变量,在config.Routes.MapHttpRoute方法中设置

 

转载于:https://www.cnblogs.com/darrenji/p/4916284.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/568965.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用openpyxl,Python对excel读写文件

Python安装openpyxl 首先我们应该配置pip 详细配置教程地址&#xff1a; https://blog.csdn.net/hanhanwanghaha/article/details/105811544 电脑打开cmd,输入&#xff1a; pip install openpyxl 如下图&#xff1a; 如上图&#xff0c;就安装好了 随后我们打开pycharm&…

ASP.NET简易教程3——SQL存储过程

SQL存储过程 B/S结构下&#xff0c;离不开数据库&#xff0c;在接下来的学习时&#xff0c;要求读者至少知道少许的基本SQL语句&#xff08;增删查改&#xff09;。 在进行正式编程时&#xff0c;简要介绍一下存储过程。存储过程就是将一系列的SQL语句集中置一个文件中。 在大型…

Python中的openpyxl如何对excel修改文件

https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注&#xff01; 欢迎关注微信公众号&#xff1a;宝藏女孩的成长日记 如有转载&#xff0c;请注明出处&#xff08;如不注明&#xff0c;盗者必究&#xff09; Python安装openpyxl 首先我们应该配置pip 详细配置教程地…

Linq 左连接 left join

var APPQuery aa.query(); var ValidQuery bb.query();var query from o in APPQueryjoin v in ValidQueryon o.Id equals v.Id into resultfrom r in result.DefaultIfEmpty()select new GetFlightDto{Calsign r.Calsign........}; ps: GetFlightDto 是定义好的类库&…

Python中对列表list进行定义、增删改查、遍历及与元组的对比

https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注&#xff01; 欢迎关注微信公众号&#xff1a;宝藏女孩的成长日记 让这个可爱的宝藏女孩在努力的道路上与你一起同行&#xff01; 如有转载&#xff0c;请注明出处&#xff08;如不注明&#xff0c;盗者必究&#xf…

334. Increasing Triplet Subsequence

Given an unsorted array return whether an increasing subsequence of length 3 exists or not in the array.Formally the function should:Return true if there exists i, j, k such that arr[i] < arr[j] < arr[k] given 0 ≤ i < j < k ≤ n-1 else return…

IndentationError: unindent does not match any outer indentation level-报错问题

在python中遇到这样的问题 翻译过来是&#xff1a; 缩进错误&#xff1a;未缩进与任何外部缩进级别都不匹配 很显然&#xff0c;一般都是格式没对&#xff0c;你看看你的代码对齐了没有。python对缩进非常的严格呢&#xff01; 例如&#xff1a; 此处我的j多打了一个空格&am…

Linux下Rails3 + Lighttpd + fcgi部署研究

前言&#xff1a;为什么要研究Ruby on Rails的部署 学习Ruby on Rails已经一段时间了&#xff0c;一直使用自带的WEBrick服务器进行开发。 WEBrick是一款纯Ruby编写的服务器&#xff0c;使用方便&#xff0c;很适合开发环境下进行系统调试。但是它不支持多线程访问&#…

冒泡排序详解--python

我没学冒泡排序之前眼中的冒泡排序是这个样子的 哈哈哈 https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注&#xff01; 欢迎关注微信公众号&#xff1a;宝藏女孩的成长日记 让这个可爱的宝藏女孩在努力的道路上与你一起同行&#xff01; 如有转载&#xff0c;请注明…

uni-app和php交互DES加密解密数据

1 uni-app操作 (1) 打开HBuilderX的视图->显示终端 cd 切换到你项目的根目录 执行命令 npm install crypto-js 安装成功后你的项目根目录会生成node_modules文件夹&#xff0c;里面有crypto-js就说明成功了 &#xff08;2&#xff09;接下来在哪使用就直接import CryptoJS f…

字典超详细--python

https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注&#xff01; 欢迎关注微信公众号&#xff1a;宝藏女孩的成长日记 让这个可爱的宝藏女孩在努力的道路上与你一起同行&#xff01; 如有转载&#xff0c;请注明出处&#xff08;如不注明&#xff0c;盗者必究&#xf…

ele-plus包的安装和使用

代码仓库 版本详细说明&#xff0c;请查看doc下面的版本文件 最新版本 v0.2.4 安装 npm install ele-plus -S 复制代码引入ElePlus 完整引入 import Vue from vue import ElementUI from element-ui import element-ui/lib/theme-chalk/index.css import App from ./App.vue im…

两数之和-给定一个整数数组nums和一个目标值target,请你在该数组找出和为目标值的那两个整数,并返回他们的数组下标,你可以假设每种输入只会对应一个答案。但是,数组同一个元素不能使-python

https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注&#xff01; 欢迎关注微信公众号&#xff1a;宝藏女孩的成长日记 让这个可爱的宝藏女孩在努力的道路上与你一起同行&#xff01; 如有转载&#xff0c;请注明出处&#xff08;如不注明&#xff0c;盗者必究&#xf…

制作github博客

最近几天突发其想&#xff0c;想做一个GitHub的博客&#xff0c;链接https://imutang.github.io&#xff0c;然后决定先使用HUGO来制作我的第一个个人博客&#xff0c;编辑文字方面没有博客园这么方便 转载于:https://www.cnblogs.com/mutangchun/p/11363405.html

选择排序算法python

选择排序定义&#xff1a; https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注&#xff01; 欢迎关注微信公众号&#xff1a;宝藏女孩的成长日记 让这个可爱的宝藏女孩在努力的道路上与你一起同行&#xff01; 如有转载&#xff0c;请注明出处&#xff08;如不注明&am…

如此互联网?

共享单车已经到了尾声&#xff0c;ofo的处境一直遮遮掩掩&#xff0c;用户押金的真金白银却不知何时才能退回&#xff0c;遥遥无期。Mobike也一样&#xff0c;一直在亏本&#xff0c;持续投资依然无法换来其盈利。 记得几年前&#xff0c;开始注意到街上停有Mobike。记得曾和同…

Python中的异常处理Try...except...finally的使用的简单理解

python中的异常处理1.Python中的异常处理定义2.Try…except…finally的使用3.代码4.运行结果1.Python中的异常处理定义 在程序运行的过程中&#xff0c;如果发生了错误就会报错&#xff0c;我们可以事先约定返回一个错误代码&#xff0c;这样就可以知道是否有错&#xff0c;以…

Aveva Marine 新建项目001

1# 项目代号定义&#xff0c;三个字符&#xff0c;例如Abc 2# 新建文件夹&#xff0c;命名为“Abc” 3# 新建文件名为evars.bat文件&#xff0c;放到项目文件夹的根目录 内容为&#xff1a; 1 SET Abc000项目文件夹路径\Abc000\ 2 SET AbcMAC项目文件夹路径\AbcMAC\ 3 SET …

在CSDN写文章头部生成标题目录

步骤&#xff1a; 1.点击帮助&#xff0c;再点击目录。 2.随后出现目录&#xff0c;再点击复制。 3.把你复制的东西粘贴到文章开头&#xff0c;将你想要作为目录的文字设置成为标题。注意&#xff1a;前面有几个井号键就是几级标题。 5.标题目录设置好之后&#xff0c;就可…

《图片另存为JPG/PNG/WebP》让WebP图片下载为PNG格式

WebP是google推行的新的图片格式, 可以使用更小的空间,保存更清晰的图片, 但由于格式较新, Adobe Photoshop CC 2019 20.0.2版本都无法打开查看, 所以我们需要保存网页中的WebP图片为通用性较强png格式 我们可以使用一款扩展程序图片另存为JPG/PNG/WebP, 将WebP格式图片转换为p…