微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

GET 方法返回空

如何解决GET 方法返回空

晚安,我正在开发一个 WebApi,我正在使用代码优先的方法,为此我使用了实体框架 6.0.1,在我的项目中,我有以下类 PersonController.cs、Configurations.cs(我现在手动插入数据)和我的 Person 类,我使用 Postman 来模拟请求,我在网站上查找了一些示例,但没有一个与我的示例相同,如果有人可以帮助我,谢谢。

PersonController.cs

using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using WebApi.Models;
using WebApi.Contexto;

namespace WebApi.Controllers
{
    public class PersonController : ApiController
    {
        private readonly Context contexto = new Context();
        [Route("api/person")]
        [HttpGet]
        public IHttpActionResult getAll(string search)
        {
            if (string.IsNullOrEmpty(search))
            {
                search = "";
            }
            var list = contexto.People.Where(x => x.firstName.Contains(search) || x.lastName.Contains(search));

            return Ok(list);

        } 
     }
}

Configurations.cs

namespace WebApi.Migrations
{
    using System;
    using System.Data.Entity;
    using System.Data.Entity.Migrations;
    using System.Linq;
    using WebApi.Models;

    internal sealed class Configuration : DbMigrationsConfiguration<WebApi.Contexto.Context>
    {
        public Configuration()
        {
            AutomaticMigrationsEnabled = false;
        }

        protected override void Seed(WebApi.Contexto.Context context)
        {
            //  This method will be called after migrating to the latest version.

            //  You can use the DbSet<T>.AddOrUpdate() helper extension method 
            //  to avoid creating duplicate seed data. E.g.

            context.People.Add(new Person { firstName = "Andrew ",lastName = "Teste",id = 1,birthDate = new DateTime(2021,01,31) });
           
        }
    }
}

Person.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace WebApi.Models
{
    public class Person
    {
        public int id { get; set; }
        public string firstName { get; set; }
        public string lastName { get; set; }
        public DateTime birthDate { get; set; }
    }
}

解决方法

调用api时搜索参数为空

为此的一个工作是创建一个简单的模型或类 喜欢

public class Query
{
   public string Search {get;set;}
}

并将您的方法更改为

public IHttpActionResult getAll([FromBody]Query query)
{
        var search = query.Search;

        if (string.IsNullOrEmpty(search))
        {
            search = "";
        }

        var list = contexto.People.Where(x => x.firstName.Contains(search) || 
        x.lastName.Contains(search));

        return Ok(list);

} 

你的 Postman 负载应该是这样的

{
   "search":"a"
}
,

只是通知你,我的错误是在数据库连接字符串中发现的,它没有参数:

Integrated Security = True;

感谢大家的帮助

,

您缺少 [HttpGet] 属性中的参数,因此您的方法参数实际上并未获取您的查询字符串。

试试

[HttpGet("{search}")]

public IHttpActionResult GetAll([FromQuery] string search)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。