В проекте Fn отсутствуют операции http (CRUD) - PullRequest
0 голосов
/ 28 декабря 2018

Я потратил весь день на то, чтобы быть в восторге от контейнерной серверной платформы 'fn project' - http://fnproject.io/.

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

fn проект кажется подходящим для моих потребностей, пока я не закончу изучениедокументация и все соответствующие сообщения в блоге, и вдруг подумать, что?Чего ждать???Где находятся операции http? '.

Я нигде не могу найти ни одной ссылки, в которой говорится, возможно ли даже иметь триггеры http для различных операций http (т. Е. POST, PUT, PATCH, DELETE), не говоря уже окак бы я это сделал.

Я хочу создать API-интерфейсы REST (или, конечно, по крайней мере, json-обслуживающий API-интерфейс RPC на основе http - если у него нет гиперссылок, это не REST;), нодавайте не будем вдаваться в этот в этой теме)

Я что-то здесь упускаю (конечно, правильный фрагмент документации) ??

Может кто-нибудь, пожалуйста, просветите меня относительно того, как я это сделаю,или даже скажите мне, если я совершенно не понял, для чего мне это использовать?

Мое возбуждение пока ослабло, но я надеюсь, что кто-то изменится с правильной информацией.

ЭтоМне кажется странным, что я не могу найти никого, кто бы жаловался по этому поводу, поэтому я думаю, что это, возможно, указывает на мое недопонимание.

Другие решения, такие как OpenFaaS, выглядят интересно, но я немне не нужно учиться развертывать кубернет и рои докеров, если я могу избежать этого:)

Ответы [ 2 ]

0 голосов
/ 29 декабря 2018

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

Когда я в прошлом создавал сервисы Serverless Framework (или создавал и развертывал функции Lambda с использованием terraform), я былпри развертывании в AWS и поэтому использовали предложение AWS API Gateway (их продукт на самом деле называется API-шлюзом, но важно признать, что API-шлюз является шаблоном проектирования распределенных систем / микросервисов).

API-шлюз делает егоможно направить определенные типы запросов http, включая метод (GET, POST, PUT, DELETE), к нужным функциям.

Платформы, такие как Fn project и OpenFaaS, не предоставляют готового решения API-шлюза и позволяютКажется, нам нужно позаботиться об этом самим.

Эти вышеупомянутые платформы предназначены для развертывания функций.Мы находим другие биты через наш продукт выбора.

0 голосов
/ 28 декабря 2018

Я не эксперт, но на данный момент невозможно указать http-метод внутри триггера .Проверьте последняя спецификация триггера : как вы можете видеть, здесь нет понятия http.

Однако обработка различных методов HTTP может быть выполнена внутри самой функции.

Например, в Java (с fdk-java v1.0.80) вы можете использовать com.fnproject.fn.api.httpgateway.HTTPGatewayContext в качестве первого параметра функции, как описано в разделе " Доступ к информации HTTPИз функций"документации:

В Fn для Java, когда ваша функция обслуживается триггером HTTP (или другим совместимым шлюзом HTTP), вы можете получить доступ как к входящему запросузаголовки для вашей функции, добавив параметр 'com.fnproject.fn.api.httpgateway.HTTPGatewayContext' к параметрам вашей функции.

Использование этого позволяет вам:

  • ...
  • Доступ к методу и запрос URL для триггера
  • ...

Затем можно получить метод HTTP с помощьювызов getMethod() для HTTPGatewayContext передается как параметр.

На других языках (с другими fdk) можно сделать то же самое:

Из этого контекста вы сможете получитьПараметр method передается, когда fn invoke --method=[GET|POST|...] (через заголовок fn-http-method).

Основной недостаток заключается в том, что все методы HTTP должны обрабатываться в одной и той же функции.Тем не менее, вы можете структурировать свой код так, чтобы в нем был только один класс.

...