Asp.net core mvc में किसी अन्य कंट्रोलर से GET विधि का उपयोग कैसे करें?
मेरे पास दो नियंत्रक हैं: OcorrenciasAPI और IgnicoesAPI। मुझे अपने नियंत्रक IgnicoesAPI गर्त OcorrenciasAPI नियंत्रक में GET विधि का उपयोग करने की आवश्यकता है। ऐसा करने के लिए सबसे अच्छा तरीका क्या है?
जवाब
BijuKalanjoor
यह आपके प्रश्न का सटीक उत्तर नहीं है, लेकिन इससे आपकी समस्या हल हो सकती है। 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
साझा कार्यक्षमता के साथ एक नया वर्ग बनाएं, इसे अपने स्टार्टअप में एक सेवा के रूप में जोड़ें। और फिर इसे अपने नियंत्रकों में इंजेक्ट करें।
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();