博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 编写Web API
阅读量:7090 次
发布时间:2019-06-28

本文共 5560 字,大约阅读时间需要 18 分钟。

1)创建Web API项目

打开VS2012->FILE->New->Project->Web->ASP.NET MVC 4 Web Application, 修改名字为WebAPIApplication, 单击OK, 在Project Template中选择Web API,单击OK.

2)添加Controller Template选择Empty API controller名字为StudentValueController.cs代码如下

using System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Net.Http;using System.Web.Http;namespace MvcApplication22.Controllers{    public class StudentValueController : ApiController    {        ///           /// 根据搜索条件获取学生信息          /// GET /api/StudentValue/GetStudents?stuName=chad&stuAddress=jiaxing          ///           /// 姓名          /// 地址          /// 
满足条件的学生信息
[HttpGet] public IEnumerable
GetStudents(string stuName, string stuAddress) { using (DataClassesDataContext dcdc = new DataClassesDataContext()) { List
items = dcdc.StudentInfos.ToList(); if (stuName != null) { items = items .Where(u => u.stuName.Contains(stuName)).ToList(); } if (stuAddress != null) { items = items .Where(u => u.stuAddress.Contains(stuAddress)).ToList(); } return items; } } ///
/// 根据学生编号获取学生信息 /// GET /api/StudentValue/GetStudentById/{id} /// ///
编号 ///
学生信息
[HttpGet] public StudentInfo GetStudentById(int id) { using (DataClassesDataContext dcdc = new DataClassesDataContext()) { return dcdc.StudentInfos .FirstOrDefault(u => u.stuId.Equals(id)); } } ///
/// 添加学生信息 /// POST /api/StudentValue/AddStudent /// {stuName:'jack', stuAddress:'jiangsu'} /// ///
学生信息 ///
添加成功返回学生信息, 否则返回null
[HttpPost] public StudentInfo AddStudent(StudentInfo item) { try { using (DataClassesDataContext dcdc = new DataClassesDataContext()) { dcdc.StudentInfos.InsertOnSubmit(item); dcdc.SubmitChanges(); return item; } } catch (Exception ex) { return null; } } ///
/// 修改学生信息 /// PUT /api/StudentValue/UpdateStudent/{id} /// {stuName:'jack', stuAddress:'jiangsu'} /// ///
编号 ///
新的学生信息 ///
更新成功返回学生信息, 否则返回null
[HttpPut] public StudentInfo UpdateStudent(int id, StudentInfo item) { try { using (DataClassesDataContext dcdc = new DataClassesDataContext()) { StudentInfo newItem = dcdc.StudentInfos .FirstOrDefault(u => u.stuId == id); newItem.stuName = item.stuName; newItem.stuAddress = item.stuAddress; dcdc.SubmitChanges(); return newItem; } } catch (Exception ex) { return null; } } ///
/// 删除学生信息 /// DELETE /api/StudentValue/DeleteStudent/{id} /// ///
编号 ///
删除成功返回true, 否则返回false
[HttpDelete] public bool DeleteStudent(int id) { try { using (DataClassesDataContext dcdc = new DataClassesDataContext()) { StudentInfo item = dcdc.StudentInfos .FirstOrDefault(u => u.stuId.Equals(id)); dcdc.StudentInfos.DeleteOnSubmit(item); dcdc.SubmitChanges(); return true; } } catch (Exception ex) { return false; } } }}
3)修改WebApiConfig.cs内容如下,主要是修改API访问路径
using System;using System.Collections.Generic;using System.Linq;using System.Web.Http;namespace MvcApplication2{    public static class WebApiConfig    {        public static void Register(HttpConfiguration config)        {            config.Routes.MapHttpRoute(                name: "DefaultApi",                routeTemplate: "api/{controller}/{action}/{id}",                defaults: new { id = RouteParameter.Optional }            );        }    }}

4)用Firefox RESTClient测试编写的API

提示:在Body中添加json数据时请在Headers中添加Content-Type: application/json

修改WebAPI返回数据的样式如将返回样式改成JSON:

在Global.asax.cs添加方法
/// <summary>
/// 设置WebAPI返回的样式(XML或者JSON)
/// </summary>
/// <param name="config"></param>
void ConfigureApi(HttpConfiguration config)
{
// Remove the JSON formatter
//config.Formatters.Remove(config.Formatters.JsonFormatter);
// or
// Remove the XML formatter
config.Formatters.Remove(config.Formatters.XmlFormatter);
}
并在方法Application_Start中调用
ConfigureApi(GlobalConfiguration.Configuration);

 

MVC4发布到IIS,出现HTTP 错误 404.0 - Not Found的解决方法。

1)Web Site所对应的Application Pool的.NET Framework Version改成v4.0。
2)由于使用的是VS2012,只要在MVC根目录的web.config中添加
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
就行了

转载于:https://www.cnblogs.com/luoxiaoxi/p/5242522.html

你可能感兴趣的文章
PaddlePaddle
查看>>
《数据科学R语言实践:面向计算推理与问题求解的案例研究法》一一第2章 樱花公路赛参赛选手比赛时间建模...
查看>>
MySQL 5.6 的 GTIDs : 新复制协议和中断复制的新方法 【已翻译100%】
查看>>
国际电信联盟批准首个大数据标准
查看>>
Linus 爱 GPL,但不喜欢 GPL 诉讼
查看>>
《BackTrack 5 Cookbook中文版——渗透测试实用技巧荟萃》—第3章3.1节简介
查看>>
《SAP入门经典(第4版•修订版)》——2.2 ASAP和业务流程蓝图设计
查看>>
《深入剖析Nginx》——2.6 特殊应用逻辑的调试
查看>>
2017年度 OSC 源创会计划,技术干货精彩纷呈
查看>>
为什么说产品化是私有IaaS的唯一出路?
查看>>
阿里云联手学而思东家,给学习加点新元素
查看>>
C++语言基础 例程 案例:MyVector类的设计
查看>>
阿里云中间件产品ARMS公测 实时监控“一站式”解决
查看>>
shiro+ehcache缓存 和 验证码 和 记住我
查看>>
200多个js技巧代码(五)
查看>>
数据库设计原理:数据建模的三个阶段
查看>>
sendmail配置和学习
查看>>
MD5工具类
查看>>
邮件归档体现数据价值
查看>>
Executors 创建单例线程newSingleThreadExecutor
查看>>