在 WebAPI GET 方法中传递参数以过滤列表

学习

我按照在线教程使用 WebAPI 创建了一个基本应用程序。它可以很好地完成它的工作。GET 方法从数据库表中检索列表并将其填充到前端网站中。我只是想通过传递一个或多个参数来过滤该列表。

这是 EmployeeController.cs 文件中的代码。大部分代码与从模板创建的代码没有变化。(对不起,如果它太多了,但我想提供足够的信息)

我可以通过修改“return db.Employees;”来实现我的目标吗?线,还是我需要更多的东西?

感谢您的帮助!

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Description;
using WebAPI.Models;

namespace WebAPI.Controllers
{
    public class EmployeeController : ApiController
    {
        private DBModel db = new DBModel();

        // GET: api/Employee
        public IQueryable<Employee> GetEmployees()
        {
            //return db.Employees;
            return db.Employees;
        }


        // PUT: api/Employee/5
        [ResponseType(typeof(void))]
        public IHttpActionResult PutEmployee(int id, Employee employee)
        {

            if (id != employee.EmployeeID)
            {
                return BadRequest();
            }

            db.Entry(employee).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!EmployeeExists(id))
                {
                    return NotFound();
                }
                else
                {
                    throw;
                }
            }

            return StatusCode(HttpStatusCode.NoContent);
        }

        // POST: api/Employee
        [ResponseType(typeof(Employee))]
        public IHttpActionResult PostEmployee(Employee employee)
        {
            db.Employees.Add(employee);
            db.SaveChanges();

            return CreatedAtRoute("DefaultApi", new { id = employee.EmployeeID }, employee);
        }

        // DELETE: api/Employee/5
        [ResponseType(typeof(Employee))]
        public IHttpActionResult DeleteEmployee(int id)
        {
            Employee employee = db.Employees.Find(id);
            if (employee == null)
            {
                return NotFound();
            }

            db.Employees.Remove(employee);
            db.SaveChanges();

            return Ok(employee);
        }

        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                db.Dispose();
            }
            base.Dispose(disposing);
        }

        private bool EmployeeExists(int id)
        {
            return db.Employees.Count(e => e.EmployeeID == id) > 0;
        }
    }
}
沙姆西尔K

在回应您在我的YouTube频道的视频的问题在这里
假设您想使用员工代码过滤员工,那么 api 方法将是这样的。

public IQueryable<Employee> GetEmployees(string empCode)
{
    return db.Employees.Where(x => x.EMPCode==empCode);
}

可以通过查询字符串传递相应的参数。像这样:http://localhost:46568/api/employee?empCode=BJC


具有多个过滤器选项的 api 方法

public IQueryable<Employee> GetEmployees(string empCode,string mobile)
{
    return db.Employees.Where(x => x.EMPCode == empCode || x.Mobile == mobile);
}

例如。请求:http://localhost:46568/api/employee?empCode=BJC&mobile=754010

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

GET / DELETE背后的原因无法在webapi中包含主体

OData WebApi Url中的传递参数

HTTP POST方法被视为WebApi上的GET

WebApi Http Get在HomeController中不起作用

odata webapi路由问题:标识符不匹配的get方法

如何使Webapi GET方法与查询参数上的保留字符一起使用?

如何在WebApi中路由具有相同参数的两个get方法?

具有分页,排序和筛选功能的WebAPI Get方法

测试将对象作为参数的GET请求(Asp.NET WebApi控制器)

MVC Webapi get方法将模型作为参数传递

在WebApi中使用POST方法而不是GET方法。我是不是该?

尝试在我的WebAPI上调用特定的GET方法,但未找到HTTP 404

在GET方法中在angularJs中传递参数

为什么在ASP.NET WebAPI中不能有多个get方法

如何在WebAPI中将可变数量的参数传递给GET

无法在WebApi OData中实现多个GET方法

WebAPI GET长参数

WebApi路由-许多GET方法

WebAPI:从控制器构造函数检索GET参数

WebAPI-多个不带参数的GET方法

WebAPI 2:使用错误的参数调用默认的GET ALL

c# webapi - 请求的资源不支持 http 方法“GET”

WebAPI - 在传递数组参数时使用 POST 来执行 GET 的工作。什么可能出错?

WebAPI 中重载 Get 方法的路由问题

在 webapi 中编写触发作业的方法应该是 post 还是 get 调用?

未从 Angular 应用程序调用 Webapi get 方法

使用路径和查询参数的 WebApi GET

AJAX 调用 WebAPI Get 方法,参数不下载文件 ASP .NET MVC

我对从 webapi 到 angularjs 和 html 的 get 方法有问题