ASP.Net Ajax или API? - PullRequest
       10

ASP.Net Ajax или API?

0 голосов
/ 30 марта 2019

[Не уверен, что это правильное место, чтобы спросить это.Если этот вопрос относится к другому SO форуму, пожалуйста, дайте мне знать.]

Я разрабатываю веб-страницу со списком элементов, которые пользователь может перетаскивать вверх или вниз в списке.Пользователь также может добавлять новые элементы в список или удалять элементы из списка.Кстати, я делаю это в ASP.Net Core.

Итак, когда пользователь взаимодействует со списком, JS в браузере хочет перезвонить на сервер, чтобы сообщить ему об изменениях списка.Два моих варианта (я думаю) - вызывать конечные точки API Ajax или REST на сервере.Обе схемы приводят к асинхронному обращению к серверу с возвращаемым значением, указывающим на успех или неудачу.

Как я понимаю, у Ajax есть преимущество, заключающееся в том, что он входит в состав аутентификации пользователя. То естьЯ могу легко реализовать понятие, что вызывающий абонент должен быть аутентифицированным (вошедшим в систему) пользователем (конечная точка Ajax ничем не отличается от любой другой конечной точки GET или POST контроллера в этом отношении).Единственный реальный недостаток использования Ajax, о котором я могу подумать, - это придумывать кучу имен конечных точек для всех различных функций, которые мне нужно представить.Более серьезная проблема заключается в том, что использование Ajax для меня просто пахнет неправильно.

С другой стороны, набор конечных точек API REST поставляется с некоторой изящной семантикой, которая упрощает управление сопровождением и тестированием кода.Но из того, что я прочитал, вызовы RESTful не понимают концепцию, согласно которой вызывающая сторона ранее аутентифицировала себя и владеет cookie, чтобы доказать это.

Как вы можете сказать, я новичок в миреREST API.Я могу быть совершенно неправ в своих предположениях относительно аутентификации и REST API.Если эту проблему действительно легко обойти, может какой-нибудь добрый человек опубликует простой пример, чтобы привести меня в мою сторону ...

Ответы [ 3 ]

0 голосов
/ 30 марта 2019

Я согласен с тем, что Restful API можно тестировать и поддерживать.

Вы можете использовать JWT-аутентификацию для защиты ваших Restful API, и она может быть настроена на возврат токена-носителя только в том случае, если пользователь вошел в систему.

И вы можете написать свой собственный ExtendAuthorizationFilter и зарегистрировать его в файле Startup.cs.

 services.AddMvc(
                options => options.Filters.Add(new ExtendAuthorizationFilter())
            ).SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

и

public class ExtendAuthorizationFilter : IAsyncAuthorizationFilter
    {
        public Task OnAuthorizationAsync(AuthorizationFilterContext context)
        {
           //Your code here
        }
    }

здесь - пример реализации JWT с jQuery ajax.

0 голосов
/ 31 марта 2019

Я делаю что-то очень похожее в нескольких местах и ​​использую AJAX-вызовы для моих действий контроллера. Вы можете получить практически все, что захотите, от необработанного JSON до полностью визуализированных частичных представлений и многого другого. У вас гораздо лучшая защита (хотя бы и на время), чем у API.

Преимуществом API, если это применимо, является то, что вы хотите, чтобы у него были публичные конечные точки.

0 голосов
/ 30 марта 2019

если я правильно понимаю, вы можете использовать Сигнал R https://dotnet.microsoft.com/apps/aspnet/real-time, который используется для асинхронных уведомлений клиентских веб-приложений

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...