Asp.net core mvc में किसी अन्य कंट्रोलर से GET विधि का उपयोग कैसे करें?

Aug 18 2020

मेरे पास दो नियंत्रक हैं: OcorrenciasAPI और IgnicoesAPI। मुझे अपने नियंत्रक IgnicoesAPI गर्त OcorrenciasAPI नियंत्रक में GET विधि का उपयोग करने की आवश्यकता है। ऐसा करने के लिए सबसे अच्छा तरीका क्या है?

जवाब

BijuKalanjoor Aug 18 2020 at 14:56

यह आपके प्रश्न का सटीक उत्तर नहीं है, लेकिन इससे आपकी समस्या हल हो सकती है। GET विधि के अंदर अपने कोड को एक सामान्य वर्ग में वापस लाएं और इस वर्ग को दोनों नियंत्रक से एक्सेस करें। नीचे नमूना कोड जोड़ रहा है।

नमूना

public sealed class Person
{
    public int ID { get; set; }
    public string Name { get; set; }
}

कोष

public class PersonRepository
{
    public IEnumerable<Person> GetPeople()
    {
        return new List<Person>()
        {
            new Person{ID = 1, Name = "Name 1" },
            new Person{ID = 2, Name = "Name 2" }
        };
    }
}

पहला आपी नियंत्रक

[Route("api/[controller]")]
[ApiController]
public class MyFirstApiController : ControllerBase
{
    private readonly PersonRepository personRepository = new PersonRepository();

    [HttpGet]
    public IEnumerable<Models.Person> Get()
    {
        return personRepository.GetPeople();
    }
}

दूसरा आपी नियंत्रक

[Route("api/[controller]")]
[ApiController]
public class MySecoundApiController : ControllerBase
{
    private readonly PersonRepository personRepository = new PersonRepository();
    [HttpGet]
    public IEnumerable<string> Get()
    {
        // Calling same repository here.
        var people = personRepository.GetPeople();

        return people.Select(p=> p.Name);
    }
}
BruceAdams Aug 18 2020 at 14:58

साझा कार्यक्षमता के साथ एक नया वर्ग बनाएं, इसे अपने स्टार्टअप में एक सेवा के रूप में जोड़ें। और फिर इसे अपने नियंत्रकों में इंजेक्ट करें।

public interface IMyService
{
    string MyMethod();
}

public class MyService : IMyService
{
    public string MyMethod()
    {
        throw new NotImplementedException();
    }
}

Startup.cs

services.AddTransient<IMyService, MyService>();

OcorrenciasAPI निर्माता

  private readonly IMyService _myService;

    public OcorrenciasAPI (IMyService  myService)
    {
       _myService = myService
    }

इग्निस्कोप्सि कंस्ट्रक्टर

  private readonly IMyService _myService;

    public IgnicoesAPI(IMyService  myService)
    {
       _myService = myService
    }

उपयोग

var result = _myService.MyMethod();