【问题标题】:Data not post using .net core web api未使用 .net core web api 发布数据
【发布时间】:2019-08-14 13:44:27
【问题描述】:

这是我的控制器,当我尝试通过邮递员使用我的 api 发送数据但 sql 数据库未更新但获得 http 请求工作时。我的 url 是 -http://localhost:51441/api/test/1 用于 getHTTP 请求。这是正确的吗? 我试图通过使用邮递员 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);
        }


    }
}

【问题讨论】:

  • 你不能指望任何人能够以目前的状态回答这个问题吗?
  • 请帮助我
  • 仍然无法提供帮助。我们不知道您如何将数据“发送”到此操作方法。您还没有解释“不响应”是什么意思。请花几秒钟以上的时间写下您的问题,否则没有人可以提供帮助。
  • 先生,请帮我纠正我的问题。如果你能帮助我,我真的很感激,我是一名学生,也是 web api 的新手。我试图将我的完整控制器发送到堆栈溢出,每次我尝试发送我的问题堆栈溢出弹出错误消息时,请帮助我,这是我实习的任务,
  • 是的,但是错误消息是什么?您可能是 Web API 新手,但您对与其他人交流并不陌生。尝试并理解,除非您先帮助我们,否则我们无法提供帮助。

标签: asp.net-web-api asp.net-core


【解决方案1】:

在你的操作上使用[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方法,url为http://localhost:51441/api/test,邮递员需要配置为

如果你是在做PUT方法,则url为http://localhost:51441/api/test/1。Postman需要配置为

要获取特定记录,请使用GET 方法,在您的情况下,网址为http://localhost:51441/api/test/1

【讨论】:

    猜你喜欢
    • 2018-06-05
    • 2020-12-04
    • 2022-01-10
    • 1970-01-01
    • 2020-11-01
    • 2019-12-28
    • 2017-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多