Использование множественного Get () в Asp.Net API

Привет, пытаюсь использовать несколько запросов diff Get () в моем API, но я получаю сообщение об ошибке

already defines a member called 'Get' with the same parameter types

Как мне изменить это, чтобы я мог все свои операторы Get

        public IEnumerable<appinfo> Get()
    {
        using (XamarinEntities entities = new XamarinEntities())
            return entities.appinfoes.ToList();
    }
    public IEnumerable<string> Get()
    {
        return new string[] { "id", "fname", "lname", "phone", "company", "approveduser" };
    }
    public appinfo Get(string email)
    {
        using (XamarinEntities entities = new XamarinEntities())
            return entities.appinfoes.FirstOrDefault(e => e.email == email);
    }
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
42
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваши методы должны иметь уникальные имена или имена с уникальной подписью (то есть параметры). Простое решение - просто дать вашим методам уникальные имена, которые будут более наглядными:

[HttpGet]
[Route("/entities")]
public IEnumerable<appinfo> GetEntities()
{
    using (XamarinEntities entities = new XamarinEntities())
        return entities.appinfoes.ToList();
}

[HttpGet]
[Route("/properties")]
public IEnumerable<string> GetProperties()
{
    return new string[] { "id", "fname", "lname", "phone", "company", "approveduser" };
}

[HttpGet]
[Route("/appinfo")]
public appinfo GetAppInfo(string email)
{
    using (XamarinEntities entities = new XamarinEntities())
        return entities.appinfoes.FirstOrDefault(e => e.email == email);
}

Вы можете использовать атрибут Route, чтобы определить уникальный URL-адрес для доступа к каждому методу.

В настоящее время я обращаюсь к своему 1-му Get (), как этот localhost / api / xamarin / - если я переименую его в GetEntitities, я все равно буду получать доступ таким же образом? Или поэтому вы добавляете в [Маршрут ...] выше, чтобы несколько методов использовали один и тот же URL?

MitchMahoney 28.11.2018 04:37

У вас не может быть нескольких методов, использующих один и тот же URL (если вы не использовали разные HTTP-команды, такие как POST, PUT и т. д.). Как фреймворк узнает, какой метод выполнить? В конечном итоге вы можете называть методы C# как хотите (я бы выбрал что-нибудь описательное), а затем, используя атрибуты Route, вы можете определить разные URL-адреса для каждого метода.

Justin Helgerson 28.11.2018 04:48

весь код находится в моем XamarinController, поэтому api попадает в localhost / api / xamarin - должен ли я создать отдельный контроллер, чтобы я мог иметь мой второй запрос Get (), указывающий на другой URL-адрес, например localhost / api / secondController

MitchMahoney 28.11.2018 04:51

Почему бы вам просто не использовать атрибуты Route для определения вашего URL-адреса? Используя атрибуты, вы можете определить свои маршруты как что-то вроде localhost/api/xamarin/entities, localhost/api/xamarin/properties и localhost/api/xamarin/appinfo.

Justin Helgerson 28.11.2018 04:54

Теперь я тебя понял! Это в основном то, о чем я спрашивал в своем комментарии, я просто плохо объяснил это.

MitchMahoney 28.11.2018 04:55

Без проблем! Я надеюсь, что ваш API проживет долгую и благополучную жизнь.

Justin Helgerson 28.11.2018 04:57

Это работает на моем тестовом ПК, но когда я нажимаю на новый ПК и пытаюсь получить доступ, используя указанные выше маршруты, я получаю эту ошибку <? Xml version = "1.0" encoding = "ISO-8859-1"?> < Ошибка> <Message> Не обнаружен HTTP-ресурс, соответствующий URI запроса 'localhost: 8888 / api / Xamarin / properties '. </ Сообщение> <MessageDetail> На контроллере' Xamarin 'не обнаружено действий, соответствующих запросу. </MessageDetail> </Error>

MitchMahoney 28.11.2018 18:35

Если он работает на одной машине, а не на другой, это, вероятно, другая проблема, выходящая за рамки этого вопроса. Может разница в версии ASP.NET MVC на сервере? Если это новое приложение, я настоятельно рекомендую вместо этого использовать ASP.NET Core, и вы избежите подобных проблем.

Justin Helgerson 28.11.2018 21:06

А - понял. Это, по крайней мере, дает мне отправную точку и некоторые идеи. Спасибо вам любезно

MitchMahoney 28.11.2018 21:55

Другие вопросы по теме