Форум программистов, компьютерный форум, киберфорум
Web API
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
2 / 2 / 0
Регистрация: 18.09.2021
Сообщений: 418

Web API ошибка

22.08.2024, 13:59. Показов 1087. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, я делаю api на asp net. при тестировании контроллера в swagger у меня появляется ошибка (представлена на скрине)

ниже представлю код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
using Library.Application.DTOs;
using Library.Application.Interfaces;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
 
namespace LibraryAPI.Controllers
{
    [ApiController]
    [Route("api/[controller]")]
   // [Authorize]
    public class BooksController : ControllerBase
    {
        private readonly IBookService _bookService;
        public BooksController(IBookService bookService)
        {
            _bookService = bookService;
        }
 
        [HttpGet]
        public async Task<ActionResult<IEnumerable<BookDto>>> GetAllBooks()
        {
            var books = await _bookService.GetAllBooksAsync();
            return Ok(books);
        }
 
        [HttpGet("{id}")]  
        public async Task<ActionResult<BookDto>> GetBookById(int id)
        {
            var book = await _bookService.GetBookByIdAsync(id);
            if (book == null)
            {
                return NotFound();
            }
            return Ok(book);
        }
 
        [HttpGet("isbn/{isbn}")]
        public async Task<ActionResult<BookDto>> GetBookByISBNAsync(string isbn)
        {
            var book = await _bookService.GetBookByISBNAsync(isbn);
            if (book == null)
            {
                return NotFound();
            }
            return Ok(book);
        }
 
        [HttpPost]
        //[Authorize(Roles ="Admin")]
        public async Task<ActionResult<BookDto>> CreateBook([FromBody] BookDto bookDto)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }
            var createdBook = await _bookService.CreateBookAsync(bookDto);
            return CreatedAtAction(nameof(GetBookById), new { id = createdBook.Id }, createdBook);
        }
 
        [HttpPut]
        //[Authorize]
        public async Task<ActionResult<BookDto>> UpdateBook(int id, [FromBody] BookDto bookDto)
        {
            if (id != bookDto.Id)
            {
                return BadRequest("ID mismatched");
            }
 
            var updatedBook = await _bookService.UpdateBookAsync(id, bookDto);
 
            if(updatedBook == null)
            {
                return NotFound();
            }
            return Ok(updatedBook);
        }
 
        [HttpDelete]
        //[Authorize(Roles ="Admin")]
        public async Task<ActionResult<BookDto>> DeleteBook(int id)
        {
            var book = await _bookService.GetBookByIdAsync(id);
            if (book==null)
            {
                return NotFound();
            }
            await _bookService.DeleteBookAsync(id);
            return NoContent();
 
        }
 
        [HttpPost("borrow")]
        //[Authorize(Roles ="Admin, Client")]
        public async Task<IActionResult> BorrowBook([FromBody]BorrowBookDto borrowBookDto)
        {
            var borrowedBook = await _bookService.BorrowBookAsync(borrowBookDto);
 
            if (borrowedBook == null)
            {
                return NotFound("Book or User not found");
            }
 
            return Ok(borrowedBook);
        }
 
 
 
    }
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using Library.Application.DTOs;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Library.Application.Interfaces
{
    public interface IBookService
    {
        Task<IEnumerable<BookDto>> GetAllBooksAsync();
        Task<BookDto> GetBookByIdAsync(int id);
        Task<BookDto> GetBookByISBNAsync(string isbn);
        Task<BookDto> CreateBookAsync(BookDto BookDto);
        Task<BookDto> UpdateBookAsync(int id, BookDto bookDto);
        Task DeleteBookAsync(int id);
        Task<BorrowBookDto> BorrowBookAsync(BorrowBookDto borrowBookDto);
    }
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
using AutoMapper;
using Library.Application.DTOs;
using Library.Application.Interfaces;
using Library.Domain.Interfaces;
using Library.Domain.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Library.Application.Services
{
    public class BookService : IBookService
    {
        private readonly IUnitOfWork _unitOfWork;
        private readonly IMapper _mapper;
 
        public BookService(IUnitOfWork unitOfWork, IMapper mapper)
        {
            _unitOfWork = unitOfWork;
            _mapper = mapper;
        }
        public async Task<IEnumerable<BookDto>> GetAllBooksAsync()
        {
            var books = await _unitOfWork.Books.GetAllAsync();
            return _mapper.Map<IEnumerable<BookDto>>(books);
        }
 
        public async Task<BookDto> GetBookByIdAsync(int id)
        {
            var book = await _unitOfWork.Books.GetByIdAsync(id);
            return _mapper.Map<BookDto>(book);
        }
        public async Task<BookDto> GetBookByISBNAsync(string isbn)
        {
            var book = await _unitOfWork.Books.GetByISBNAsync(isbn);
            return _mapper.Map<BookDto>(book);
        }
        public async Task<BookDto> CreateBookAsync(BookDto BookDto)
        {
            var book = _mapper.Map<Book>(BookDto);
            await _unitOfWork.Books.AddAsync(book);
            await _unitOfWork.CompleteAsync();
            return _mapper.Map<BookDto>(book);
        }
        
        public async Task<BookDto> UpdateBookAsync(int id, BookDto bookDto)
        {
            var book = await _unitOfWork.Books.GetByIdAsync(id);
 
            if (book == null)
            {
                return null;
            }
            _mapper.Map<BookDto>(book);
            await _unitOfWork.Books.UpdateAsync(book);
            await _unitOfWork.CompleteAsync();
            return _mapper.Map<BookDto>(book);
        }
 
        public async Task DeleteBookAsync(int id)
        {
           await _unitOfWork.Books.DeleteAsync(id);
            await _unitOfWork.CompleteAsync();
        }
 
 
        public async Task<BorrowBookDto> BorrowBookAsync(BorrowBookDto borrowBookDto)
        {
            var book = await _unitOfWork.Books.GetByIdAsync(borrowBookDto.BookId);
            var user = await _unitOfWork.Users.GetByIdAsync(borrowBookDto.UserId);
 
            if (book == null || user == null)
            {
                return null;
            }
 
            user.BorrowedBooks ??= new List<Book>();
            user.BorrowedBooks.Add(book);
 
            await _unitOfWork.Users.UpdateAsync(user);
            await _unitOfWork.CompleteAsync();
 
            var borrowedBookDto = new BorrowBookDto
            {
                BookId = book.Id,
                UserId = user.Id,
                BorrowingTime = DateTime.Now, 
                ReturningTime = DateTime.Now.AddDays(14) 
            };
 
            return borrowedBookDto;
        }
 
    }
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
using Library.Domain.Interfaces;
using Library.Domain.Models;
using Library.Infrastructure.Data;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
 
namespace Library.Infrastructure.Repositories
{
    public class BookRepository : IBookRepository
    {
        private readonly AppDbContext _context;
 
        public BookRepository(AppDbContext context)
        {
            _context = context;
        }
 
        public async Task<IReadOnlyList<Book>> GetAllAsync()
        {
            return await _context.Books.Include(b=>b.Author).ToListAsync();
        }
 
        public async Task<Book> GetByIdAsync(int bookId)
        {
            return await _context.Books.Include(b=>b.Author).FirstOrDefaultAsync(b=>b.Id == bookId);
        }
 
        public async Task<Book> GetByISBNAsync(string ISBN)
        {
            return await _context.Books.Include(b => b.Author).FirstOrDefaultAsync(b => b.ISBN == ISBN);
 
        }
        public async Task<Book> AddAsync(Book book)
        {
            await _context.Books.AddAsync(book);
            await _context.SaveChangesAsync();
            return book;
        }
        public async Task<Book> UpdateAsync(Book book)
        {
            _context.Books.Update(book);
            await _context.SaveChangesAsync();
            return book;
        }
 
        public async Task DeleteAsync(int bookId)
        {
            var book = await GetByIdAsync(bookId);
            if(book != null)
            {
                _context.Books.Remove(book);
                await _context.SaveChangesAsync();
            }
        }
                        
    }
}
Может кто помочь найти в чем именно ошибка? Никак понять не могу...
Миниатюры
Web API ошибка   Web API ошибка  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.08.2024, 13:59
Ответы с готовыми решениями:

Роутинг web api - ошибка при сопоставлении маршрутов
Добрый день Продолжаю эпопею с роутингом Методы котроллера: public Object Get(int id) { ...

Web api, out of memory
Добрый день. Имеется вот такой код public class FileHelper { public static string GetHash(FileInfo file) { ...

Авторизация Web API
Всем привет. Сейчас пытаюсь сделать авторизацию Web API. Мне нужно чтобы на мобилке была обычная авторизация логин+пароль, только...

2
 Аватар для sau
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
25.08.2024, 12:52
volver, покажите определение контекста и версию EF

Цитата Сообщение от volver Посмотреть сообщение
Может кто помочь найти в чем именно ошибка? Никак понять не могу
по ссылке пробовали почитать ? - там описано в чем проблема.
либо у Вас старая версия EF в которой нет реализации IDbAsyncQueryProvider , либо в вашем контексте определен тип не связанный с EF
0
Эксперт .NET
 Аватар для Usaga
14078 / 9295 / 1347
Регистрация: 21.01.2016
Сообщений: 34,895
27.08.2024, 03:07
Цитата Сообщение от volver Посмотреть сообщение
using Microsoft.AspNetCore.Mvc;
Проект ASP NET Core.

Цитата Сообщение от volver Посмотреть сообщение
using System.Data.Entity;
... но при этому используется старый EF 6.2.0?

Это у меня лыжи не едут или тут что-то не то?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.08.2024, 03:07
Помогаю со студенческими работами здесь

Производительность Web API
Приветствую. Решил разобраться с Web api. Создал проект. Опубликовал. Все работает, но есть ньюанс: Первое подключение...

Клиент Web Api
Авторизуюсь к web api - следующий запрос выдает не авторизованный доступ, авторизация на сервере реализована с помощью FormAuthentication....

Асинхронность в Web API
У меня есть проект, который представляет собой REST API для управлением локальным хранилищем (по сути просто IEnumerable объект) Это...

Авторизация в Web API
Всем привет. Я использую ASp.NET WEB API и делаю авторизацию к нему. По сути мне нужно только логин/пароль и некоторые поля. Ни ролей...

Авторизация на web api
Здравствуйте. Пытаюсь сделать авторизацию на web api с куки и вообще не понимаю, как. Про куки нашёл мало информации и только про то, как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru