我有一个示例.NET Core 2.0 WebApi代码,它可以在Visual Studio 2017中运行,但相同的代码在Visual Code 1.18中不起作用。 POST命令返回400 Bad Request。 GET命令适用于两者。 我必须丢失一些文件或设置它是在Visual Studio 2017中为您完成的。 有谁知道我在Visual Studio Code中做错了什么?
谢谢 彼得
这是控制器的代码:
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc;
using TodoApi.Models;
using System.Linq;
namespace TodoApi.Controllers
{
[Route("api/[controller]")]
public class TodoController : Controller
{
private readonly TodoContext _context;
public TodoController(TodoContext context)
{
_context = context;
if (_context.TodoItems.Count() != 0) return;
_context.TodoItems.Add(new TodoItem { Name = "Item1" });
_context.SaveChanges();
}
[HttpGet]
public IEnumerable<TodoItem> GetAll()
{
return _context.TodoItems.ToList();
}
[HttpGet("{id}", Name = "GetTodo")]
public IActionResult GetById(long id)
{
TodoItem item = _context.TodoItems.FirstOrDefault(t => t.Id == id);
if (item == null)
{
return NotFound();
}
return new ObjectResult(item);
}
[HttpPost]
public IActionResult Create([FromBody] TodoItem item)
{
if (item == null)
{
return BadRequest();
}
_context.TodoItems.Add(item);
_context.SaveChanges();
return CreatedAtRoute("GetTodo", new { id = item.Id }, item);
}
[HttpPut("{id}")]
public IActionResult Update(long id, [FromBody] TodoItem item)
{
if (item == null || item.Id != id)
{
return BadRequest();
}
TodoItem todo = _context.TodoItems.FirstOrDefault(t => t.Id == id);
if (todo == null)
{
return NotFound();
}
todo.IsComplete = item.IsComplete;
todo.Name = item.Name;
_context.TodoItems.Update(todo);
_context.SaveChanges();
return new NoContentResult();
}
[HttpDelete("{id}")]
public IActionResult Delete(long id)
{
TodoItem todo = _context.TodoItems.FirstOrDefault(t => t.Id == id);
if (todo == null)
{
return NotFound();
}
_context.TodoItems.Remove(todo);
_context.SaveChanges();
return new NoContentResult();
}
}
}
答案 0 :(得分:0)
对不起大家浪费时间!
对于Visual Studio Code我在使用Postman时身体中没有任何东西,当然[FormBody]参数为null,这就是我收到Bad Request消息的原因。