代码之家  ›  专栏  ›  技术社区  ›  K.Z

无法通过Postman调用访问Web API CORE 3.0

  •  0
  • K.Z  · 技术社区  · 5 年前

    我测试的很简单。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 。我已成功运行Web API,但无法从邮递员处进行调用/

    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证书和不启用SSL证书,但仍然没有结果

    0 回复  |  直到 5 年前
        1
  •  1
  •   tttdev    5 年前

    从一开始。政务司司长评论

    app.UseHttpsRedirection();
    

    和使用 http://localhost:5000

    如果您确实需要在https上运行它,您可能需要有一个证书。 您可以通过在终端/cmd中运行“dotnet dev certs https--trust”来创建一个证书。

        2
  •  0
  •   Suleman    5 年前

    您能否通过添加此项来启用CorsPolicy=>[EnableCors(“CorsPolicy”)]位于控制器类的顶部。

    namespace CoreAPIApplication.Controllers
    {
        [EnableCors("CorsPolicy")]
        [Route("api/[controller]")]
        [ApiController]
    
    推荐文章