Nano Hash - криптовалюты, майнинг, программирование

Нужна помощь в создании раздела [HttpPost] в asp.net core webapi

Я учусь создавать webapi, и мне нужна помощь. У меня проблемы со сборкой почтового контроллера! Я не могу заставить его работать непосредственно в методе, который я создал для добавления значений в базу данных. Я не могу найти справки по искомому контенту, документации и т. Д. Есть предложения?

Модель класса:

public class TbStudents
{
    public int StuId { get; set; }
    public string StuName { get; set; }
    public string StuDegree { get; set; }
}

Метод класса:

Почта

public class MethodStudents
 {

//GET Method

public async Task<List<TbStudents>> GetReadStudents()
        {
            List<TbStudents> list = new List<TbStudents>();
            using (NpgsqlConnection myConn = new NpgsqlConnection(Conns.ConnStudents))
            {
                string sql = "SELECT * FROM students ORDER BY stu_name";
                NpgsqlCommand myQuery = new NpgsqlCommand(sql, myConn);
                myConn.Open();

                NpgsqlDataReader myReader = await myQuery.ExecuteReaderAsync();

                while (myReader.Read())
                {
                    TbStudents data = new TbStudents
                    {
                        StuId = int.Parse(myReader["stu_id"].ToString()),
                        StuName = myReader["stu_name"].ToString(),
                        StuDegree = myReader["stu_degree"].ToString(),
                    };
                    list.Add(data);
                }
                myConn.Dispose();
            }
            return list;
        }


//POST Method

public async Task addStudent(TbStudents student) {
    using(NpgsqlConnection myConn = new NpgsqlConnection(Conns.ConnStudents)) {
        string sql = "INSERT INTO students (stu_name, stu_degree)" +
            "VALUES (@name, @degree)";
    
        NpgsqlCommand myQuery = new NpgsqlCommand(sql, myConn);
    
        myQuery.Parameters.AddWithValue("@name", students.StuName);
        myQuery.Parameters.AddWithValue("@degree", students.StuDegree);
    
        myConn.Open();
        await myQuery.ExecuteNonQueryAsync();
        myConn.Dispose();
    }
 }
}

Контроллеры классов:

{
    [Route("api/[controller]")]
    [ApiController]
    public class StudentsController : ControllerBase
    {
        MethodStudents methodStudents = new methodStudents();

        // GET: api/students
        [HttpGet]
        public async Task<ActionResult<List<TbStudents>>> GetStudents()
        {
            var list = methodStudents.GetReadStudents();

            return await list;
        }

        //Post: api/students
        [HttpPost]
        public async Task<ActionResult<TbStudents>> PostStudents()
        {          
            var postStu = methodStudents.AddStudents();

            return await postStu;

        }

    }
}

Контроллер [HttpPost] застрял у меня из-за некоторых ошибок ...

В строке: var postStu = methodStudents. AddStudents ();

Ошибка CS7036 Не указан аргумент, соответствующий обязательному формальному параметру "student" в "MethodStudents.AddStudent (TbStudents)"

В строке: return await postStu;

Ошибка CS0029. Невозможно неявно преобразовать тип void в Microsoft.AspNetCore.Mvc.ActionResult ‹TestApiStudents.Data.Models.TbStudents›


  • Что за ошибка? 29.03.2021
  • Привет! Ошибки на контроллере: .AddStudents Нет аргумента, соответствующего обязательному формальному параметру «student» для «MethodStudents.AddStudents (TdStudents)» return await postStu; Невозможно неявно преобразовать тип void в microsoft.aspnetcore.mvc.action.result ... 29.03.2021
  • Привет @ csharpoor! Как сказал Гуннархок, вам нужно передать экземпляр TbStudents в метод AddStudents. Кроме того, вы не можете установить переменную postStu, потому что метод AddStudents не возвращает никаких данных. 31.03.2021

Ответы:


1

Вам необходимо передать значение в метод AddStudent(), когда вы вызываете его в var postStu = AddStudent();, поскольку вы определяете метод с параметром. Кроме того, я не уверен, что это опечатка, но в вашем PostStudents() методе, вы вызываете .AddStudents(), вам следует удалить точку '.'

29.03.2021
  • Спасибо, я пытаюсь это сделать! Извините, это была опечатка, я редактировал сообщение. 29.03.2021
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..