Saranya Mahesh Ответов: 0

Как преобразовать проект web API в плагин и получить к нему доступ из другого проекта web API в рамках того же решения?


У меня есть базовый проект web API, который выполняет основные операции, и у меня есть пользовательский/заказной проект web API. Пользовательский проект выполняет дополнительные функции (bespoke) в дополнение к существующим функциям, выполняемым базовым API.
Как в принципе преобразовать проект API в плагин и получить к нему доступ из базового API в основном на уровне контроллера?

Что я уже пробовал:

Я попытался разработать примерный проект для экспериментального доказательства концепции.
Здесь у меня есть базовый проект API и пользовательский проект API в одном решении.
В базовом API: я подключил к нему простую базу данных через EF и создал интерфейс с методом add для вставки данных в таблицу. Я реализовал его как контроллер.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PluginTestProject.Interfaces
{
    interface IEmployee
    {
        bool AddEmployee();       
    }
}

У меня есть контроллер, который реализует этот интерфейс:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace CustomeAPI.Controllers
{
    public class CustomEmployeeController : IEmployee
    {
        // GET: CustomEmployee
        public bool AddEmployee()
        {
            try
            {
                var employee = new tblEmployee();
                employee.firstName = "John";
                employee.lastName = "Snow";
                employee.address = "address test";

                using (var context = new PluginTestDBEntities())
                {
                    context.tblEmployee.Add(employee);
                    context.SaveChanges();
                    return true;
                }
            }
            catch (Exception e)
            {
                return false;
            }
        }
    }
}

Все это прекрасно работает. Но то, что мне нужно, находится ниже:
В пользовательском API:
1. мне нужно преобразовать его в плагин и получить доступ к нему из базового проекта.
Я должен быть в состоянии сказать, какой контроллер (базовый контроллер или пользовательский контроллер) искать.
Во-первых, возможно ли это, и если да, то, пожалуйста, помогите мне, как этого достичь?

Пожалуйста, помогите, так как я новичок в веб-API и плагинах.
Заранее спасибо!

F-ES Sitecore

Может быть, посмотрите на инъекцию зависимостей (google "Web api dependency injection"). Это должно позволить вам настроить, какой контроллер используется, что позволит вам заменить один из них другим. Если вы не можете выбрать сами контроллеры в DI, вам может потребоваться переместить код, который выполняет эту работу, в проект службы, и вместо того, чтобы выполнять работу в контроллере, вы делаете это в службе и настраиваете, какую службу использовать с помощью DI.

Saranya Mahesh

я прошу прощения. Сразу после того, как я прочитал о внедрении зависимостей в Google, я понял, что неправильно сформулировал свой запрос. Пожалуйста, ознакомьтесь с обновленным вопросом.

Ahmad F Hassan

в вашем базовом API вы хотите использовать существующий API в качестве плагина (цепные вызовы)? или вы хотите иметь возможность создавать небольшие API-интерфейсы в виде dll и ссылаться на них?

0 Ответов