Веб-API ASP.net Всегда возвращает все результаты, а не по мере необходимости - PullRequest
0 голосов
/ 11 октября 2018

Привет, поэтому я пробовал каждый метод в сети, чтобы получить это право, я добавил базу данных mdf, а также создал модель таблиц в этой базе данных, поэтому, когда я вхожу в стандартный список, все пользователи работают, но все работает отлично, ноЯ добавил функцию в соответствии с приведенным ниже кодом, которая, согласно нескольким источникам в сети, должна возвращать одного пользователя в соответствии с содержанием этой таблицы, другими словами, / api / users будет возвращать все, но / api / users / 123 будетвернуть все так же, и это не должно быть, по моему мнению, это должно только вернуть пользователя 123

пожалуйста, дайте мне знать, что я делаю неправильно, любая помощь будет принята с благодарностью

 using System;
 using System.Collections.Generic;
 using System.Data;
 using System.Data.Entity;
 using System.Data.Entity.Infrastructure;
 using System.Linq;
 using System.Net;
 using System.Net.Http;
 using System.Threading.Tasks;
 using System.Web.Http;
 using System.Web.Http.Description;
 using APPAPI.Models;


 namespace APPAPI.Controllers
 {
 public class UsersController : ApiController
 {
    private APPDATAENT _context;
    public UsersController()
    {
        _context = new APPDATAENT();
    }
    //get api/users
    public IEnumerable<User> GetUsers()
    {
        return _context.Users.ToList();
    }
    public User GetMember(string member)
    {
        var membership = _context.Users.SingleOrDefault(c => c.UserName == 
 member);
        if (membership == null)
            throw new HttpResponseException(HttpStatusCode.NotFound);
        return membership;
    }

1 Ответ

0 голосов
/ 11 октября 2018

Шаблон маршрута по умолчанию для основанных на соглашениях маршрутов обычно

"api/{controller}/{id}"

Обратите внимание на имя параметра id.

Ваше действие определено как

public User GetMember(string member);

что member это проблема.Он не соответствует шаблону маршрута для этого действия, поэтому по умолчанию возвращается к действию GetUsers(), так как параметр id обычно необязателен по умолчанию в шаблоне.

действие рефакторинга

[HttpGet]
public IHttpActionResult GetMember(string id) {
    var membership = _context.Users.SingleOrDefault(c => c.UserName == id);
    if (membership == null)
        return  NotFound();
    return Ok(membership);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...