
# API方法
#### **注册**
*http://${EXTENSION_API_ADDR}/extension/register*
进程部署的扩展都需要在FunctionGraph注册成功后才能接收事件。您可以通过 EXTENSION_API_ADDR 环境变量得到FunctionGraph平台开放的提供注册的扩展API地址，例如对于Python，EXTENSION API 的获取方式为os.getenv("EXTENSION_API_ADDR ")。
**路径**
- /extension/register
**方法**
-- POST
**请求标头**
FunctionGraph-Extension-Name -- 扩展名的完整文件名。必需：是。类型：字符串。
FunctionGraph-Extension-Address -- 该扩展用于接收调用事件的服务端地址。必需：是。类型：字符串。例如：127.0.0.1:8081。
![](https://support.huaweicloud.com/api-functiongraph/public_sys-resources/note_3.0-zh-cn.png)
- FunctionGraph需要使用扩展的完整文件名来验证扩展是否已完成引导启动，且扩展注册的请求头必须包含本扩展启动的httpServer的地址和端口。例如，请求头的格式为：
  ```
  headers = {
  'Content-type': 'application/json',
  'FunctionGraph-Extension-Name': "extensionDemo.sh"
  'FunctionGraph-Extension-Address': "127.0.0.1:8011"
  }
  ```
  
- 当前规定最多支持十个扩展，扩展启动的Server地址和端口限制为127.0.0.1:8081 \~ 127.0.0.1:8090，且每个扩展的端口不可重复。
 
**主体参数**
不做解析
**响应代码**
200 - 响应正文包含函数名称、函数版本和处理程序名称。
其他为错误请求
示例响应正文
```
{
    "functionName": "helloWorld",
    "functionVersion": "$LATEST",
    "errorInfo": {
             "errorType": "",
             "errorMessage": ""
    }
}
```
#### 调用
*http://${FunctionGraph-Extension-Address}/extension/invoke*
在注册完成后，创建的httpServer的可以监听此路径，用于接收FunctionGraph函数请求调用事件。
**路径**
- /extension/register
**方法**
-- POST
**主体参数**
traceId - 请求的requestID
invokedFunctionUrn - 请求调用的URN
**响应代码**
200 - 响应正文包含函数名称、函数版本和处理程序名称。
其他为错误请求
示例响应正文
```
{
    "traceId": "3da1f2dc-3222-475e-9205-e2e6c6318895",
    "invokedFunctionUrn": "sn:cn:yrk:1111:function:0@test@hello:latest"
}
```
