fnproject 扩展

Posted rongfengliang-荣锋亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了fnproject 扩展相关的知识,希望对你有一定的参考价值。

目前支持的扩展方式
 
  1. Listeners - listen to API events such as a route getting updated and react accordingly.
  2. Middleware - a chain of middleware is executed before an API handler is called.
  3. Add API Endpoints - extend the default Fn API.
 
具体的官方介绍
 

Listeners

Listeners are the main way to extend Fn.

The following listener types are supported:

    • App Listeners - GoDoc
    • Runner Listeners - GoDoc

Creating a Listener

You can easily use app and runner listeners by creating a struct with valid methods satisfying the interface for the respective listener and adding it to the Fn API

Example:

package main

import (
    "context"

    "github.com/fnproject/functions/api/server"
    "github.com/fnproject/functions/api/models"
)

type myCustomListener struct{}

func (c *myCustomListener) BeforeAppCreate(ctx context.Context, app *models.App) error { return nil }
func (c *myCustomListener) AfterAppCreate(ctx context.Context, app *models.App) error { return nil }

func (c *myCustomListener) BeforeAppUpdate(ctx context.Context, app *models.App) error { return nil }
func (c *myCustomListener) AfterAppUpdate(ctx context.Context, app *models.App) error { return nil }

func (c *myCustomListener) BeforeAppDelete(ctx context.Context, app *models.App) error { return nil }
func (c *myCustomListener) BeforeAppDelete(ctx context.Context, app *models.App) error { return nil }

function main () {
    srv := server.New(/* Here all required parameters to initialize the server */)

    srv.AddAppListener(myCustomListener)

    srv.Run()
}

Middleware

Middleware enables you to add functionality to every API request. For every request, the chain of Middleware will be called in order, allowing you to modify or reject requests, as well as write output and cancel the chain.

NOTES:

      • middleware is responsible for writing output if it‘s going to cancel the chain.
      • cancel the chain by returning an error from your Middleware‘s Serve method.

See examples of this in examples/middleware/main.go.

Adding API Endpoints

You can add API endpoints to the Fn server by using the AddEndpoint and AddEndpointFunc methods.

See examples of this in examples/extensions/main.go.

 

以上是关于fnproject 扩展的主要内容,如果未能解决你的问题,请参考以下文章

fnproject faas 框架试用

fnproject 私有镜像发布

fnproject Function files 说明

fnproject 配置选项

fnproject Message Queues 配置

fnproject 对象模型