Я новичок в ядре asp. net и изучаю различные способы выполнения вызовов API для функций, определенных в контроллере.
У меня есть контроллер новостей basi c, как показано ниже, если я сохраняю только одну функцию в этом контроллере GetAll()
, тогда я могу сделать успешный вызов API, используя https://localhost:44364/api/news
, и когда я добавляю две другие функции, тогда тот же https://localhost:44364/api/news
получает сообщение об ошибке, как показано ниже, Совершенно очевидно, поскольку я не упоминаю имя функции в своем URL.
Мой вопрос заключается в том, как я могу определить маршрут для каждой функции, чтобы я мог вызывать каждую из этих функций по URL и из ajax function
Ошибка
BookListRazor.Controllers.NewsController.GetSingleNews (BookListRazor)
BookListRazor.Controllers.NewsController.GetAll (BookListRazor)
BookListRazor.Controllers.NewsController.GetAllNews (BookListRazor)
Код
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using BookListRazor.Model;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
namespace BookListRazor.Controllers
{
[Route("api/News")]
[ApiController]
public class NewsController : Controller
{
private readonly ApplicationDbContext _db;
public NewsController(ApplicationDbContext db)
{
_db = db;
}
//get all news by languageID
[HttpGet]
// [Route("api/news/getallnews/{1}")]
public async Task<IActionResult> GetAllNews(int langID)
{
//var query = await _db.News.OrderByDescending(x => x.NewsDate).Where(x => x.LanguageID == 1 && x.NewsActive==true && x.NewsVisible==true).ToListAsync();
return Json(new { data = await _db.News.OrderByDescending(x => x.NewsDate).Where(x => x.LanguageID == langID && x.NewsActive == true && x.NewsVisible == true).ToListAsync() });
}
//get all news
[HttpGet]
public async Task<IActionResult> GetAll()
{
return Json(new { data = await _db.News.OrderByDescending(x => x.NewsDate).Where(x => x.LanguageID == 1 && x.NewsActive == true && x.NewsVisible == true).ToListAsync() });
}
//get single news by newsID
[HttpGet]
public async Task<IActionResult> GetSingleNews(int id)
{
return Json(new { data = await _db.News.FirstOrDefaultAsync(x=>x.NewsID == id) });
}
}
}