如何使用环回 4 执行 post 请求
How to perform a post request with loopback 4
经过一些研究,我发现了环回代理服务,它允许我使用 get 方法进行一些查询。但我不知道如何使用请求正文中的数据执行 POST 请求。
我的服务
import {getService} from '@loopback/service-proxy';
import {inject, Provider} from '@loopback/core';
import {StorageApiDataSource} from '../datasources';
/**
* user for both storageApi service and authApi service
*/
export interface StorageApiService {
// this is where you define the Node.js methods that will be
// mapped to the SOAP operations as stated in the datasource
// json file.
getrestdata(id?: number): Promise<StorageApiResponseData>;
saveFile(token?: string,requestBody:any): Promise<StorageApiResponseData>;
}
export interface StorageApiResponseData {
file_id: string;
direct_url: string;
}
export class StorageApiServiceProvider implements Provider<StorageApiService> {
constructor(
// storageApi must match the name property in the datasource json file
@inject('datasources.storageApi')
protected dataSource: StorageApiDataSource = new StorageApiDataSource(),
) {}
value(): Promise<StorageApiService> {
return getService(this.dataSource);
}
}
在您的数据源文件中,为您的 post 函数在 operations 数组中再添加一个模板,其中 postFunction
是函数名称。并在您的服务界面中添加相同的内容。
"operations": [{
"template": {
"method": "POST",
"url": "{POST-API-URL}",
"headers": {
"accepts": "application/json",
"content-type": "application/json"
},
"json": {
"param1": "{value1}",
"param2": "{value2}",
"param3": "{value3}"
}
},
"functions": {
"postFunction": [
"value1",
"value2",
"value3"
]
}
}]
经过深挖,我终于找到了答案。我们只需要将方法定义为 POST 并传递一些参数,这些参数将用作这些请求表单参数的变量。
希望它能帮助这里的人。
{
"name": "SendNotif",
"connector": "rest",
"baseURL": "",
"crud": false,
"options": {
"headers": {
"accept": "application/json",
"authorization": " MY AUTH KEY",
"content-type": "application/json"
}
},
"operations": [
{ "template": {
"method": "GET",
"url":"MY URL"
},
"functions": {
"send_sms": ["PARAM1","PARAM2","PARAM3"]
},
"template": {
"method": "POST",
"url":"MY URL"
},
"functions": {
"send_sms":["PARAM1","PARAM2","PARAM3"]
}
}
]
}
经过一些研究,我发现了环回代理服务,它允许我使用 get 方法进行一些查询。但我不知道如何使用请求正文中的数据执行 POST 请求。
我的服务
import {getService} from '@loopback/service-proxy';
import {inject, Provider} from '@loopback/core';
import {StorageApiDataSource} from '../datasources';
/**
* user for both storageApi service and authApi service
*/
export interface StorageApiService {
// this is where you define the Node.js methods that will be
// mapped to the SOAP operations as stated in the datasource
// json file.
getrestdata(id?: number): Promise<StorageApiResponseData>;
saveFile(token?: string,requestBody:any): Promise<StorageApiResponseData>;
}
export interface StorageApiResponseData {
file_id: string;
direct_url: string;
}
export class StorageApiServiceProvider implements Provider<StorageApiService> {
constructor(
// storageApi must match the name property in the datasource json file
@inject('datasources.storageApi')
protected dataSource: StorageApiDataSource = new StorageApiDataSource(),
) {}
value(): Promise<StorageApiService> {
return getService(this.dataSource);
}
}
在您的数据源文件中,为您的 post 函数在 operations 数组中再添加一个模板,其中 postFunction
是函数名称。并在您的服务界面中添加相同的内容。
"operations": [{
"template": {
"method": "POST",
"url": "{POST-API-URL}",
"headers": {
"accepts": "application/json",
"content-type": "application/json"
},
"json": {
"param1": "{value1}",
"param2": "{value2}",
"param3": "{value3}"
}
},
"functions": {
"postFunction": [
"value1",
"value2",
"value3"
]
}
}]
经过深挖,我终于找到了答案。我们只需要将方法定义为 POST 并传递一些参数,这些参数将用作这些请求表单参数的变量。 希望它能帮助这里的人。
{
"name": "SendNotif",
"connector": "rest",
"baseURL": "",
"crud": false,
"options": {
"headers": {
"accept": "application/json",
"authorization": " MY AUTH KEY",
"content-type": "application/json"
}
},
"operations": [
{ "template": {
"method": "GET",
"url":"MY URL"
},
"functions": {
"send_sms": ["PARAM1","PARAM2","PARAM3"]
},
"template": {
"method": "POST",
"url":"MY URL"
},
"functions": {
"send_sms":["PARAM1","PARAM2","PARAM3"]
}
}
]
}