Невозможно получить доступ к Web API CORE 3.0 из вызовов Postman - PullRequest
0 голосов
/ 06 мая 2020

Я тестирую простой. NET Web API CORE 3.1 и настраиваю простые методы, следуя руководству по https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-web-api?view=aspnetcore-3.1&tabs=visual-studio. Мне удалось запустить веб-API, но не удалось позвонить из Postman /

enter image description here

Контроллер

namespace CoreAPIApplication.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class TodoItemsController : ControllerBase
{
    private readonly TodoContext _context;

    public TodoItemsController(TodoContext context)
    {
        _context = context;
    }

    [HttpGet]
    public async Task<ActionResult<IEnumerable<TodoItem>>> GetTodoItems()
    {
        return await _context.TodoItems.ToListAsync();
    }

    [HttpGet("{id}")]
    public async Task<ActionResult<TodoItem>> GetTodoItem(long id)
    {
        var todoItem = await _context.TodoItems.FindAsync(id);

        if (todoItem == null)
        {
            return NotFound();
        }

        return todoItem;
    }

    [HttpPut("{id}")]
    public async Task<IActionResult> PutTodoItem(long id, TodoItem todoItem)
    {
        if (id != todoItem.Id)
        {
            return BadRequest();
        }

        _context.Entry(todoItem).State = EntityState.Modified;

        try
        {
            await _context.SaveChangesAsync();
        }
        catch (DbUpdateConcurrencyException)
        {
            if (!TodoItemExists(id))
            {
                return NotFound();
            }
            else
            {
                throw;
            }
        }

        return NoContent();
    }

    [HttpPost]
    public async Task<ActionResult<TodoItem>> PostTodoItem(TodoItem todoItem)
    {
        _context.TodoItems.Add(todoItem);
        await _context.SaveChangesAsync();

        return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
    }

    [HttpDelete("{id}")]
    public async Task<ActionResult<TodoItem>> DeleteTodoItem(long id)
    {
        var todoItem = await _context.TodoItems.FindAsync(id);
        if (todoItem == null)
        {
            return NotFound();
        }

        _context.TodoItems.Remove(todoItem);
        await _context.SaveChangesAsync();

        return todoItem;
    }

    private bool TodoItemExists(long id)
    {
        return _context.TodoItems.Any(e => e.Id == id);
    }
 }
}

enter image description here

enter image description here

Я пробовал почтальон с включением сертификата SSL и без него в настройках почтальона, но все равно не получил результата

Ответы [ 2 ]

1 голос
/ 06 мая 2020

Из Startup.cs закомментируйте

app.UseHttpsRedirection();

и используйте http://localhost: 5000

Если вам нужно запустить его на https, вам может потребоваться иметь сертификат. Вы можете создать его, выполнив: "do tnet dev-certs https --trust" в вашем терминале / cmd.

0 голосов
/ 06 мая 2020

Можете ли вы включить CorsPolicy, добавив это => [EnableCors ("CorsPolicy")] в начало вашего класса контроллера.

namespace CoreAPIApplication.Controllers
{
    [EnableCors("CorsPolicy")]
    [Route("api/[controller]")]
    [ApiController]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...