Данные не публикуются с использованием .net core web api - PullRequest
0 голосов
/ 24 марта 2019

это мой контроллер, когда я пытался отправить данные почтальоном, используя мой API, но база данных sql не обновилась, но получил запрос http.мой URL был - http://localhost:51441/api/test/1 для запроса getHTTP. ЭТО ПРАВИЛЬНО?Я попытался опубликовать данные, вызвав тот же URL-адрес с помощью метода почтальона POST и необработанных данных.Пожалуйста, помогите мне решить этот вопрос,

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);
        }


    }
}

1 Ответ

0 голосов
/ 25 марта 2019

Используйте [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, почтальон должен быть настроен как enter image description here

Если вы используете метод PUT, URL будет http://localhost:51441/api/test/1. Почтовик должен быть настроен как enter image description here

Чтобы получить конкретную запись, с помощью метода GET и URL-адрес http://localhost:51441/api/test/1 в вашем случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...