ApiController

public class StudentController : ApiController
    {
        StudentDAL dal = new StudentDAL();

        [HttpGet]
        public List<StudentInfo> ShowStudent(string sname="",int cId=0,int pageIndex=1,int pageSize=3)
        {
            return dal.ShowStudentInfo(sname,cId, pageIndex,pageSize);
        }

        [HttpGet]
        public List<ClassInfo> ShowClass()
        {
            return dal.ShowClass();
        }

        [HttpPost]
        public int ImportStudent(StudentInfo mod)
        {
            return dal.ImportStudent(mod);
        }

        [HttpPost]
        public int DelStudent(int sId)
        {
            return dal.DelStudent(sId);
        }

        [HttpPost]
        public int AddStudent(StudentInfo mod)
        {
            return dal.AddStudent(mod);
        }

        [HttpGet]
        public StudentInfo GetStudentInfo(int sId)
        {
            return dal.GetStudentInfo(sId);
        }

        [HttpPost]
        public int UpdStudent(StudentInfo mod)
        {
            return dal.UpdStudent(mod);
        }

 
### API Controller 的使用方法与实现细节 #### 1. 基本定义与功能 API Controller 是 ASP.NET Web API 中的核心组件之一,用于处理 HTTP 请求并返回数据响应。它继承自 `ApiController` 类[^1],并通过路由机制绑定到特定的 URL 路径上。 以下是其主要特点: - **HTTP 方法支持**:通过 `[HttpGet]`, `[HttpPost]`, `[HttpPut]`, 和 `[HttpDelete]` 等特性来映射不同的 HTTP 动词。 - **自动序列化**:返回的数据会自动被序列化为 JSON 或 XML 格式[^5]。 - **依赖注入支持**:可以轻松集成依赖注入框架以管理复杂的服务层逻辑。 --- #### 2. 创建与配置 API Controller 创建一个简单的 API Controller 需要遵循以下模式: ```csharp public class TweetsController : ApiController { // 处理 GET 请求 public IEnumerable<Tweet> Get() { return Twitter.GetTweets(); } // 处理 POST 请求 public IHttpActionResult Post([FromBody] Tweet tweet) { if (tweet == null || !ModelState.IsValid) return BadRequest(); var result = Twitter.SaveTweet(tweet); return Ok(result); // 返回成功状态码及结果 } } ``` 上述代码展示了如何定义一个基本的 API Controller 及其实现。其中: - `Get()` 方法负责处理 `/api/tweets` 的 GET 请求。 - `Post()` 方法接受来自客户端的 JSON 数据,并将其反序列化为 `Tweet` 对象。 --- #### 3. 参数传递方式 参数可以通过多种方式进行传递,具体取决于请求的方法和设计需求。 ##### 查询字符串参数 适用于简单键值对形式的输入,例如获取用户信息时传入 ID[^2]: ```csharp [Route("user/{userId}")] public IActionResult GetUserById(string userId) { var user = UserService.GetUser(userId); return Ok(user); } ``` ##### 表单提交 对于 HTML 表单提交的情况,通常使用 `[FromForm]` 特性标记参数[^3]: ```html <form method="post" action="/api/apidemo"> Company name:<br/> <input type="text" name="name"/><br /> Contact Name<br /> <input type="text" name="msg"/><br /><br /> <input type="submit" value="Submit"/> </form> ``` 对应的控制器代码如下: ```csharp [HttpPost] public IActionResult CreateCompany([FromForm]string name, [FromForm]string msg) { var company = new Company { Name = name, Message = msg }; Database.Add(company); return CreatedAtAction(nameof(GetCompany), new { id = company.Id }, company); } ``` ##### JSON Body 参数 当需要发送复杂的对象结构时,推荐使用 JSON 格式的请求体[^4]。此时应使用 `[FromBody]` 特性解析数据: ```csharp [HttpPost] public IActionResult AddProduct([FromBody] Product product) { if (!ModelState.IsValid) return BadRequest(ModelState); ProductService.Add(product); return StatusCode(StatusCodes.Status201Created, product); } ``` --- #### 4. 错误处理与状态码 为了提高接口的健壮性和用户体验,应当合理设置错误提示以及相应的 HTTP 状态码。 常见场景包括但不限于: - 输入验证失败:返回 `400 Bad Request`; - 找不到资源:返回 `404 Not Found`; - 成功操作:返回 `200 OK` 或 `201 Created`。 示例代码片段: ```csharp if (string.IsNullOrEmpty(name)) return NotFound(new { error = "User not found." }); return Ok(new { message = "Operation succeeded!" }); ``` --- #### 5. 测试与调试 测试 API 接口的最佳工具包括 Postman、Swagger UI 等可视化平台。这些工具有助于快速模拟各种类型的请求,并观察实际返回的结果。 此外,也可以编写单元测试脚本来覆盖核心业务逻辑部分。例如利用 Microsoft 提供的 Test Framework 进行自动化验证。 --- ### 总结 综上所述,API Controller 不仅简化了 RESTful API 开发流程,还提供了丰富的扩展能力满足不同项目的需求。开发者只需关注具体的业务实现即可,其余诸如路由匹配、模型绑定等工作均由框架完成。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值