Я создаю веб-API для углового внешнего интерфейса с использованием ASP.Net API с использованием базы данных в первую очередь. Когда я тестирую URL-адрес GetPeoplez https://localhost:44333/api/people/GetPeoplez
(который должен быть списком людей) в почтальоне, он работает, но он продолжает отображать ошибку HTTP 400 для других методов контроллера
так я реализую свой контроллер
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using TestApi.Collection;
using TestApi.Models;
// For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
namespace TestApi.Controllers
{
[Route("api/[controller]")]
[Controller]
public class PeopleController : Controller
{
IPeopleCollection peopleCollection;
public PeopleController(IPeopleCollection _peopleCollection)
{
peopleCollection = _peopleCollection;
}
[HttpGet]
[Route("GetPeoplez")]
public async Task<IActionResult> GetPeoplez()
{
try
{
var peoplez = await peopleCollection.GetPeoplez();
if (peoplez == null)
{
return NotFound();
}
return Ok(peoplez);
}
catch (Exception)
{
return BadRequest();
}
}
[HttpGet]
[Route("GetPeople")]
public async Task<IActionResult> GetPeople(int? peopleId)
{
if (peopleId == null)
{
return BadRequest();
}
try
{
var people = await peopleCollection.GetPeople(peopleId);
if (people == null)
{
return NotFound();
}
return Ok(people);
}
catch (Exception)
{
return BadRequest();
}
}
[HttpPost]
[Route("AddPeople")]
public async Task<IActionResult> AddPoeple([FromBody]People model)
{
if (ModelState.IsValid)
{
try
{
var peopleId = await peopleCollection.AddPeople(model);
if (peopleId > 0)
{
return Ok(peopleId);
}
else
{
return NotFound();
}
}
catch (Exception)
{
return BadRequest();
}
}
return BadRequest();
}
[HttpDelete]
[Route("DeletePeople")]
public async Task<IActionResult> DeletePeople(int? peopleId)
{
int result = 0;
if (peopleId == null)
{
return BadRequest();
}
try
{
result = await peopleCollection.DeletePeople(peopleId);
if (result == 0)
{
return NotFound();
}
return Ok();
}
catch (Exception)
{
return BadRequest();
}
}
[HttpPut]
[Route("UpdatePeople")]
public async Task<IActionResult> UpdatePeople([FromBody]People model)
{
if (ModelState.IsValid)
{
try
{
await peopleCollection.UpdatePeople(model);
return Ok();
}
catch (Exception ex)
{
if (ex.GetType().FullName ==
"Microsoft.EntityFrameworkCore.DbUpdateConcurrencyException")
{
return NotFound();
}
return BadRequest();
}
}
return BadRequest();
}
}
}
URL, который я использую для доступа к API:
https://localhost:44333/api/people/GetPeople?id=x
для одиноких людей
https://localhost:44333/api/people/UpdatePeople?id=x
для обновления элемента
- `https://localhost:44333/api/people/AddPeople' для добавления элемента
https://localhost:44333/api/people/DeletePeople?id=x
для удаления элемента
и моя реализация метода CRUD очень проста
с использованием Microsoft.AspNetCore.Mvc;
использование Microsoft.EntityFrameworkCore;
используя Систему;
using System.Collections.Generic;
использование System.Linq;
использование System.Threading.Tasks;
using TestApi.Models;
using TestApi.ViewModel;
namespace TestApi.Collection
{
открытый класс PeopleCollection: IPeopleCollection
{
PeopleContext db;
public PeopleCollection(PeopleContext _db)
{
db = _db;
}
public async Task<int> AddPeople(People people)
{
if (db != null)
{
await db.People.AddAsync(people);
await db.SaveChangesAsync();
return people.Id;
}
return 0;
}
public async Task<int> DeletePeople(int? peopleId)
{
int result = 0;
if (db != null)
{
//Find the post for specific post id
var people = await db.People.FirstOrDefaultAsync(x => x.Id == peopleId);
if (people != null)
{
//Delete that post
db.People.Remove(people);
//Commit the transaction
result = await db.SaveChangesAsync();
}
return result;
}
return result;
}
public async Task<List<People>> GetPeoplez()
{
if (db != null)
{
return await db.People.ToListAsync();
}
return null;
}
public async Task<People> GetPeople(int? peopleId)
{
return await db.People.Where(p => p.Id == peopleId).FirstOrDefaultAsync();
}
public async Task UpdatePeople(People people)
{
if (db != null)
{
//Delete that post
db.People.Update(people);
//Commit the transaction
await db.SaveChangesAsync();
}
}
}
}
Есть идеи, как преодолеть эту ошибку? Спасибо