Вот как мне нравится это делать:
[HttpGet]
[ProducesResponseType(typeof(IList<Currency>), 200)]
public async Task<IActionResult> GetAll()
{
return Ok(await _typeService.GetCurrenciesAsync().ConfigureAwait(false));
}
[HttpGet("{id}", Name = "GetCurrency")]
[ProducesResponseType(typeof(Currency), 200)]
public async Task<IActionResult> Get([FromRoute]int id)
{
return Ok(await _expenseService.GetCurrencyAsync(id).ConfigureAwait(false));
}
Мы можем видеть в чванстве что-то вроде этого:
/api/Currency
/api/Currency/{id}
Ваш базовый контроллер может быть примерно таким, чтобы включать базу route:
[Authorize(Policy = Common.Security.Policies.ApiUser)]
[Route("api/[controller]")]
[Benchmark, ApiController]
public abstract class BaseController : ControllerBase
{
protected BaseController()
{ }
}
Вот конструктор контроллера для полноты:
public class CurrencyController : BaseController
{
private readonly IExpenseEntryService _expenseService;
private readonly ITypeService _typeService;
public CurrencyController(ITypeService typeService, IExpenseEntryService expenseService)
{
_expenseService = expenseService;
_typeService = typeService;
}
java.lang.NoSuchMethodError
всегда указывает, что версия класса, который был на пути к классу Вашего компилятора, отличается от версии класса, который находится на Вашем пути к классу во время выполнения (имел метод, отсутствуя во время компиляции, компиляция перестанет работать.)
В этом случае у Вас была другая версия org.objectweb.asm.ClassWriter
на Вашем пути к классу во время компиляции, чем находится на Вашем пути к классу во время выполнения.
Определенно у Вас есть различные версии Вашего класса ClassWriter во времени выполнения, чем время компиляции.
Я думаю, что Вы берете неверную версию asm.jar где-нибудь в пути к классу, который Вы используете для своих тестов.
У меня была подобная ошибка с помощью Spring 2.5 с, в спящем режиме на NetBeans 6.5. Одним путем я решил вопрос, загружал Spring 3.0 M2 и создавал библиотеку NetBeans, которую я назвал Spring_3 с помощью банок от дистрибутива. Эта библиотека также должна была включать antlr-runtime-3.0.jar.
См.: http://forum.springsource.org/showthread.php?t=65324
- Leo