#c# #asp.net-web-api #swagger-ui #asp.net-core-3.1
Вопрос:
Я создал новый контроллер в совершенно новом проекте веб-api в .net core 3.1. Всякий раз, когда я пытаюсь опубликовать маршрут, я получаю 404.
Мой контроллер:
using AutoMapper;
using BankAPIDemo.Models;
using BankAPIDemo.Services.Interfaces;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using System.Text.RegularExpressions;
namespace BankAPIDemo
{
[ApiController]
[Route("api/v3/[controller]")]
public class AccountsController : Controller
{
private IAccountService _accountService;
IMapper _mapper;
public AccountsController(IAccountService accountService, IMapper mapper)
{
_accountService = accountService;
_mapper = mapper;
}
//registerrNewwAccount
[HttpPost]
[Route("register_new_account")]
public IActionResult RegisterNewAccount([FromBody] RegisterNewAccountModel newAccount)
{
if (!ModelState.IsValid) return BadRequest(newAccount);
//map to aaccount
var account = _mapper.Map<Account>(newAccount);
var result = _mapper.Map<GetAccountModel>(_accountService.Create(account, newAccount.Pin, newAccount.ConfirmPin));
return Ok(result);
}
[HttpGet]
[Route("get_all_accounts")]
public IActionResult GetAllAccounts()
{
//wee want to map to GetAAccountModel as defined in ur
var accounts = _accountService.GetAllAccounts();
var cleanedAccounts = _mapper.Map<IList<GetAccountModel>>(accounts);
return Ok(cleanedAccounts);
}
[HttpPost]
[Route("authenticate")]
public IActionResult Authenticate([FromBody] AuthentiateModel model)
{
if (!ModelState.IsValid) return BadRequest(model);
//now let's map
var result = _mapper.Map<GetAccountModel>(_accountService.Authenticate(model.AccountNumber, model.Pin));
return Ok(result);
//it returns an accouunt... let's seee when we run before we know whether to map or not
}
[HttpGet]
[Route("get_by_account_number")]
public IActionResult GetByAccountNumber(string AccountNumber)
{
if (!Regex.IsMatch(AccountNumber, @"^[0][1-9]d{9}$|^[1-9]d{9}$")) return BadRequest("Account Number must be 10-digit");
var account = _accountService.GetByAccountNumber(AccountNumber);
var cleanedAccount = _mapper.Map<GetAccountModel>(account);
return Ok(cleanedAccount);
}
[HttpGet]
[Route("get_account_by_id")]
public IActionResult GetAccountById(int Id)
{
var account = _accountService.GetById(Id);
var cleanedAccount = _mapper.Map<GetAccountModel>(account);
return Ok(cleanedAccount);
}
[HttpPut]
[Route("update_account")]
public IActionResult UpdateAccount([FromBody] UpdateAccountModel model)
{
if (!ModelState.IsValid) return BadRequest(model);
var account = _mapper.Map<Account>(model);
_accountService.Update(account, model.Pin);
return Ok();
}
}
}
Когда я ПУБЛИКУЮ этот метод, я получаю 404. Я использую URL-адрес https://localhost:44372/api/v3/Accounts/register_new_account
Все остальное по умолчанию. Я могу показать прогноз погоды.
Комментарии:
1. Пожалуйста, добавьте весь запрос на публикацию, который вы делаете, к вопросу.
2. Кроме того, убедитесь, что порт (44372) и протокол (https) настроены правильно
3. Все ли маршруты в этом контроллере выходят из строя или только один ПОСТ?
4. Это начало работы?
5. Вы уверены, что получаете 404, а не 400?