这是我的控制器,当我尝试通过邮递员使用自己的api发送数据但sql数据库未更新但获得http请求工作时。我的网址是用于getHTTP请求的-http://localhost:51441/api/test/1。这是正确的吗? 我试图通过使用邮递员POST方法和原始数据调用相同的URL来发布数据。请帮助我解决这个问题,
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using WebApi4.Models;
using Microsoft.AspNetCore.Http;
namespace WebApi4.Controllers
{
[Route("api/test")]
[ApiController]
public class UserDetailsTestController : ControllerBase
{
private readonly UserDetailContext _context;
public UserDetailsTestController(UserDetailContext context)
{
_context = context;
}
// GET api/UserDetails Table
[HttpGet]
public async Task<ActionResult<IEnumerable<UserDetails>>> GetUserDetails()
{
return await _context.UserDetails.ToListAsync();
}
/// ///////////////////////////////////////////////////////////////////////////////////////////////
// GET: api/UserDetails/3
[HttpGet("{id}")]
public async Task<ActionResult<UserDetails>> GetUserDetails(int id)
{
var userDetails = await _context.UserDetails.FindAsync(id);
if (userDetails == null)
{
return NotFound();// NO NEED
}
return userDetails;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//PUT api/values/5
[HttpPut("{id}")]
public async Task<IActionResult> PutUserDetails(int id, UserDetails userDetails)
{
if (id != userDetails.UId)
{
return BadRequest();
}
_context.Entry(userDetails).State = EntityState.Modified;
try
{
await _context.SaveChangesAsync();
//NEED
}
catch (DbUpdateConcurrencyException)
{
if (!UserDetailsExists(id))
{
return NotFound();
}
else
{
throw;
}
}
return NoContent();
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// POST api/UserDetails
[HttpPost]
public async Task<ActionResult<UserDetails>>PostUserDetails(UserDetails userDetails)
{
_context.UserDetails.Add(userDetails);
await _context.SaveChangesAsync();
return CreatedAtAction("GetUserDetails",new { id=userDetails.UId},userDetails);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// DELETE api/values/5
[HttpDelete("{id}")]
public async Task<ActionResult<UserDetails>> DeleteUserDetails(int id)
{
var userDetails = await _context.UserDetails.FindAsync(id);
if(userDetails==null)
{
return NotFound();
}
_context.UserDetails.Remove(userDetails);
await _context.SaveChangesAsync();
return userDetails;
}
private bool UserDetailsExists(int id)
{
return _context.UserDetails.Any(e=>e.UId==id);
}
}
}
答案 0 :(得分:0)
对您的操作使用[FromBody]
,例如
[HttpPut("{id}")]
public async Task<IActionResult> PutUserDetails(int id, [FromBody]UserDetails userDetails)
假设我的UserDetails
模型是
public class UserDetails
{
[Key]
public int UId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
如果您想使用Post
方法,则网址为http://localhost:51441/api/test
,则邮递员需要像那样配置
如果您使用的是PUT
方法,则网址为http://localhost:51441/api/test/1
。邮递员的配置方式应为
要获取特定记录,请使用GET
方法,您的情况下的网址为http://localhost:51441/api/test/1
。