NIFI usa InvokeHTTP para enviar solicitudes http

ilustrar

A continuación se muestran cuatro métodos de solicitud http de uso común: GET, POST, PUT y DELETE.

La descripción del procesador InvokeHTTP en el documento de introducción oficial dice esto:

Un procesador de cliente HTTP que puede interactuar con un punto final HTTP configurable. La URL de destino y el método HTTP son configurables. Los atributos de FlowFile se convierten en encabezados HTTP y el contenido de FlowFile se incluye como el cuerpo de la solicitud (si el método HTTP es PUT, POST o PATCH).

En términos generales: este es un controlador de cliente HTTP que puede interactuar con puntos finales HTTP. La URL y el método HTTP en el procesador son configurables. Los atributos en el procesador se convertirán en encabezados de solicitud HTTP. Si el método de solicitud es PUT, POST o PATCH, el contenido del procesador se incluirá como el cuerpo de la solicitud (cuerpo de la solicitud).


interfaz de prueba

Aquí se utilizan varias interfaces para las pruebas del procesador, que corresponden principalmente a solicitudes GET, POST, PUT y DELETE. El código de prueba no involucra lógica de negocios y simplemente se usa para cooperar con el procesador de prueba.

package com.example.common.resp;

import com.example.common.enums.RespEnum;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;


@AllArgsConstructor
@NoArgsConstructor
@Data
public class Result {
    private Integer code;
    private String message;
    private Object data;


    // 省略部分代码。。。

    public static Result ok(Object data) {
        return ok(RespEnum.SUCCESS.getCode(), RespEnum.SUCCESS.getMessage(), data);
    }

}



=====================================================================================
测试接口
=====================================================================================



package com.example.redis.controller;

import com.alibaba.fastjson2.JSONObject;
import com.example.common.resp.Result;
import org.springframework.web.bind.annotation.*;

import java.util.Map;


@RestController
@RequestMapping("/test")
public class TestController {

    @GetMapping("/{id}")
    public Result getById(@PathVariable String id, @RequestParam Map<String, Object> query) {
        JSONObject res = new JSONObject();
        res.put("method", "GET");
        res.put("desc", "这个是get方法");
        res.put("id", id);
        res.put("query", query);
        return Result.ok(res);
    }

    @PostMapping("")
    public Result add(@RequestBody JSONObject body) {
        JSONObject res = new JSONObject();
        res.put("method", "POST");
        res.put("desc", "这个是post方法");
        res.put("body", body);
        return Result.ok(res);
    }

    @PutMapping("/{id}")
    public Result editById(@PathVariable String id, @RequestBody JSONObject body) {
        JSONObject res = new JSONObject();
        res.put("method", "PUT");
        res.put("desc", "这个是put方法");
        res.put("id", id);
        res.put("body", body);
        return Result.ok(res);
    }

    @DeleteMapping("/{id}")
    public Result deleteById(@PathVariable String id) {
        JSONObject res = new JSONObject();
        res.put("method", "DELETE");
        res.put("desc", "这个是delete方法");
        res.put("id", id);
        return Result.ok(res);
    }
}

Enviar solicitud GET

Agregar controlador: InvokeHTTP

Haga clic en Procesador en la esquina superior izquierda de la barra de herramientas y arrástrelo al lienzo, filtre el procesador InvokeHTTP y agréguelo al lienzo.

Configurar procesador

Haga doble clic en el procesador agregado, cambie a CONFIGURACIÓN y asigne un nombre al procesador.

Después de elegir un nombre, cambie a PROPIEDADES , configure el siguiente contenido y finalmente haga clic en APLICAR

Agregar encabezados de solicitud personalizados

Si necesita agregar atributos personalizados al encabezado de la solicitud, simplemente haga clic en el signo más + agregar en la esquina superior derecha. Por ejemplo, si agrego un encabezado de solicitud myToken aquí, el encabezado de la solicitud enviado en este momento llevará este parámetro.

procesador de prueba

Para facilitar las pruebas, configure el procesador InvokeHTTP para que se ejecute una vez cada 10 segundos.

De manera similar, agregue el procesador LogAttribute al lienzo.

Modifique la configuración del procesador LogAttribute y cambie el valor del atributo de Log Payload en la pestaña PROPIEDADES a verdadero

Conecte los dos procesadores, seleccione Respuesta para la relación y finalmente haga clic en AGREGAR

Seleccione finalizar para todas las RELACIONES del primer procesador InvokeHTTP excepto Respuesta.

Seleccione las RELACIONES del segundo procesador LogAttribute para terminar

Si todos los procesadores se muestran como se muestra en la imagen, significa que no hay problema y puede ejecutarse.

Inicie dos procesadores, haga clic derecho en una posición en blanco del lienzo y seleccione Iniciar

En el registro de nifi, puede ver que los resultados devueltos por la interfaz se imprimen cada diez segundos.

Enviar solicitud POST

Para enviar una solicitud POST que lleva datos del cuerpo de la solicitud, necesitamos usar otro procesador: GenerateFlowFile

Agregar procesador: GenerateFlowFile

Configurar procesador

Haga doble clic en el procesador agregado y asígnele un nombre en la pestaña CONFIGURACIÓN

Cambie a la pestaña PROPIEDADES y luego configure los valores de las propiedades Texto personalizado y Tipo Mime respectivamente. Los valores de otras propiedades pueden ser predeterminados.

Texto personalizado: (Explicación oficial) Si el formato de datos es texto y si Unique FlowFiles es falso, entonces este texto personalizado se utilizará como contenido de los FlowFiles generados y se ignorará el tamaño del archivo. En términos sencillos, si el valor en Texto personalizado es de tipo texto y el valor del atributo Unique FlowFiles es falso, el valor en Texto personalizado se considerará como el contenido del archivo de flujo, de modo que se pase el valor en Texto personalizado al siguiente procesador, InvokeHTTP, y luego se pasará a la interfaz como datos del cuerpo de la solicitud.

Agregar controlador: InvokeHTTP

Al igual que enviar una solicitud GET, agregue el procesador InvokeHTTP y luego configure el siguiente contenido: el cuerpo de la solicitud en la solicitud posterior proviene del contenido del procesador anterior.

procesador de prueba

Conecte el primer procesador GenerateFlowFile y el segundo procesador InvokeHTTP y seleccione éxito para la relación.

Continúe conectando el segundo procesador InvokeHTTP al procesador LogAttribute agregado anteriormente y seleccione Respuesta para la asociación.

De manera similar, seleccione terminar para todas las RELACIONES del procesador InvokeHTTP excepto Respuesta.

Para realizar la misma prueba conveniente, configure el primer procesador GenerateFlowFile para que se ejecute cada 10 segundos y luego inicie los tres procesadores correspondientes al método POST respectivamente (pase el mouse sobre el procesador correspondiente y haga clic con el botón derecho para seleccionar Iniciar).

Al observar el registro de nifi, puede ver que los resultados devueltos por la interfaz se imprimen cada diez segundos.

Enviar solicitud PUT

La solicitud de venta es similar a la solicitud de publicación. El procesador se puede agregar nuevamente de acuerdo con la solicitud de publicación. Solo necesita cambiar el método de solicitud en el procesador InvokeHTTP a PUT y la URL a la ruta de solicitud correspondiente. No lo volveré a agregar aquí, lo siguiente es después de agregarlo.

Resultados de la prueba

Enviar solicitud de BORRAR

La solicitud de colocación es similar a la solicitud de obtención. El procesador se puede agregar nuevamente de acuerdo con la solicitud de obtención. Solo necesita cambiar el método de solicitud en el procesador InvokeHTTP a ELIMINAR y la URL a la ruta de solicitud correspondiente. No lo volveré a agregar aquí, lo siguiente es después de agregarlo.

Resultados de la prueba

 conclusión

Lo anterior trata sobre el uso de InvokeHTTP en NIFI, si tiene alguna pregunta, comente.

Supongo que te gusta

Origin blog.csdn.net/LSW_JAVADP/article/details/132755147
Recomendado
Clasificación