如何解决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 举报,一经查实,本站将立刻删除。