ASP.Net CRUD метод отображает отображение ошибки HTTP 400 - PullRequest
0 голосов
/ 08 марта 2019

Я создаю веб-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:

  1. https://localhost:44333/api/people/GetPeople?id=x для одиноких людей
  2. https://localhost:44333/api/people/UpdatePeople?id=x для обновления элемента
  3. `https://localhost:44333/api/people/AddPeople' для добавления элемента
  4. 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();
            }
        }
    }
    

    }

Есть идеи, как преодолеть эту ошибку? Спасибо

1 Ответ

1 голос
/ 08 марта 2019

Это означает, что 400 msg означает неверный запрос на ошибку, потому что он попадает в какое-то исключение / ошибку и, следовательно, входит в блок catch, в котором вы указали возврат неверного запроса .... попробуйте отладчики и отладочный код ur

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...