WEBAPI传参及默认首页设置
开发工具:VS2017
创建WEBAPI,
1.选择ASP.NET Core Web应用程序
2.选择如下,HTTPS配置勾选去掉,暂不配置
3.“属性”中调试默认界面及launchsettings.json
4.调试以后默认页面
5.WEBAPI设置自定义首页
在wwwroot目录下添加需要的首页index.html
将Startup.cs里面的 Configure代码调整为如下:
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env) { //自定义首页 DefaultFilesOptions defaultFilesOptions = new DefaultFilesOptions(); defaultFilesOptions.DefaultFileNames.Clear(); defaultFilesOptions.DefaultFileNames.Add("index.html"); app.UseDefaultFiles(defaultFilesOptions); app.UseStaticFiles(); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseHttpsRedirection(); app.UseMvc(); }
index.html代码如下:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>The AP For CallWebApi</title> <script src="js/jquery-3.7.1.min.js"></script> <script type="text/javascript"> //var arr = [ // { "username": "Tom", "password": "tom" }, // { "username": "Jerry", "password": "jerry" } //];//api/sap var arr = { "username": "Tom", "password": "tom" };//api/values function CallApi() { //alert("show"); $.ajax({ type: "post", url: "/api/values/",//单笔实体 //url: "/api/sap/",//多笔实体 //url:"http://10.0.31.154/WebApi/api/values", contentType: "application/json", data: JSON.stringify(arr), success: function (data, status) { if (status = "success") { $("#info").html(data); } else { alert("Faile"); } } }); } </script> </head> <body> <button onclick="CallApi()">CallWebApi</button> <div id="info"></div> </body> </html>
此时保存后重启调试,显示的首页仍为***/api/values,需将项目->属性->调试或launchsettings.json调整为如下:
保存后重启调试即可显示自定义首页。
6.WEBAPI传参
POST:单笔实体
// POST api/values [HttpPost] public string Post(SapCls obj)//如未定义相应的类,可使用(dynamic obj)传递单笔资料 { string rst = ""; rst = obj.username + ":" + obj.password; return rst; }
多笔实体:
// POST api/sap/ [HttpPost] public string Post([FromBody] List<dynamic> objs)//[FromBody] List<SapCls> objs { string rst = ""; foreach (dynamic obj in objs) { rst = rst + obj.username + ":" + obj.password + ";\n"; //rst = rst + obj.UserName + ":" + obj.PassWord + ";\n"; } if (rst == "") { rst = "Null"; } if (objs.Count == 0) { rst = "Count is 0"; } return rst; }
前端传参数时contentType需设置为 "application/json",实体需要序列化:data: JSON.stringify(arr)。
以上部分仅为本机测试调试使用,前端跨域调用暂为涉及。