Tous les produits
Search
Centre de documentation

DataWorks:Source de données API REST (HTTP)

Dernière mise à jour :Aug 24, 2026

Créez une source de données API REST pour écrire des données JSON provenant d'une API RESTful vers une autre source de données, telle que MaxCompute, à l'aide d'une tâche de synchronisation. Une source de données API REST peut également servir de destination pour recevoir des données en provenance d'autres sources. Cette rubrique décrit les capacités de synchronisation des données de la source de données API REST dans DataWorks.

Limites

Types de colonnes pris en charge

Important

Lorsque vous synchronisez des données vers une destination, seule une structure de table plate à un seul niveau est prise en charge. Les structures de colonnes imbriquées ne sont pas prises en charge. Par exemple, si une API renvoie une structure telle que {data: {user: { id: 1, name:'lily'}, value: 123}}, les colonnes doivent être aplaties en colonnes parallèles telles que user_id, user_name et value dans la destination.

Type

Type de colonne

Entier

LONG, INT

Chaîne

STRING

Virgule flottante

DOUBLE, FLOAT

Booléen

BOOLEAN

Date et heure

DATE

Ajouter une source de données

Avant de développer une tâche de synchronisation dans DataWorks, ajoutez la source de données requise à DataWorks en suivant les instructions fournies dans la rubrique Configuration de la source de données. Consultez les descriptions des paramètres dans la console DataWorks pour comprendre la signification des paramètres lors de l'ajout d'une source de données.

Authentification de la source de données

La source de données API REST prend en charge les trois méthodes d'authentification suivantes :

  • No Auth : aucune authentification n'est requise. Vous pouvez accéder directement à l'API. Cette méthode convient aux API publiques qui ne nécessitent pas d'authentification.

  • Basic Auth : l'authentification s'effectue à l'aide d'un nom d'utilisateur et d'un mot de passe. Après avoir sélectionné cette méthode, saisissez le nom d'utilisateur et le mot de passe sur la page de configuration.

  • Token Auth : l'authentification s'effectue à l'aide d'un jeton. Après avoir sélectionné cette méthode, saisissez l'access_token obtenu auprès de l'API tierce dans le champ token de la page de configuration.

DataWorks ne fournit pas d'outil intégré pour obtenir des jetons d'API tierces. Si votre API tierce utilise une authentification par jeton telle qu'OAuth 2.0, vous devez obtenir l'access_token vous-même auprès du fournisseur de l'API. L'exemple suivant montre comment obtenir un jeton à l'aide de curl :

curl -X POST https://api.example.com/oauth/token \
  -d 'grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET'

Après avoir obtenu le jeton, définissez Authentication Method sur Token Auth lors de la création d'une source de données API REST, et saisissez le jeton dans le champ correspondant.

Développer une tâche de synchronisation des données

Pour plus d'informations sur le point d'entrée et la procédure de configuration d'une tâche de synchronisation, consultez les guides de configuration suivants.

Configurer une tâche de synchronisation par lots à table unique

Exemples

FAQ

  • Puis-je spécifier uniquement le nombre de requêtes de pagination ?

    • Réponse : Oui.

  • La pagination automatique est-elle prise en charge ? Par exemple, arrêter la pagination lorsque la requête ne renvoie aucune donnée.

    • Réponse : Non. Dans le cas contraire, le partitionnement basé sur le fractionnement ne peut pas être effectué.

  • Si je spécifie plus de pages de pagination qu'il n'en existe réellement, entraînant des données vides pour les pages restantes, comment le système gère-t-il cela ?

    • Réponse : Lorsque les pages restantes renvoient des données vides, cela équivaut à une requête SQL ne renvoyant aucune donnée. Le système continue à interroger l'enregistrement suivant.

  • Le système prend-il en charge l'analyse d'un seul niveau de données JSON ?

    • Réponse : Oui. L'analyse des niveaux plus profonds n'est pas effectuée.

  • Comment configurer un type de données non tableau pour une API REST dans DataWorks Data Integration ?

    • Réponse : Assurez-vous que, dans la section reader de parameter, vous définissez dataPath sur le chemin pointant vers les données non tableau. Par exemple : dataPath:"data.list". Cela permet au plug-in de localiser correctement les colonnes de données que vous souhaitez lire. Ensuite, définissez dataMode sur multiData. Cela signifie que DataWorks traitera les données comme plusieurs enregistrements individuels, même si elles ne sont pas sous forme de tableau dans les données source.

      Remarque

      Notez qu'en mode multiData, la configuration column n'est plus applicable. Vous devez spécifier directement le chemin des données dans dataPath.

      Voici un exemple de configuration d'un type de données non tableau pour l'API REST dans Data Integration :

      reader: {
        name: "restapi",
        parameter: {
          dataPath: "data.list",
          dataMode: "multiData",
          // Other parameters
        }
      }

Annexe : Démonstration de script et description des paramètres

Configurer une tâche de synchronisation par lots à l'aide de l'éditeur de code

Si vous souhaitez configurer une tâche de synchronisation par lots à l'aide de l'éditeur de code, vous devez configurer les paramètres associés dans le script selon les exigences de format de script unifié. Pour plus d'informations, consultez la rubrique Configuration en mode script. Les informations suivantes décrivent les paramètres que vous devez configurer pour les sources de données lors de la configuration d'une tâche de synchronisation par lots à l'aide de l'éditeur de code.

Démonstration de script Reader

  • Voici un exemple de script :

    {
        "type":"job",
        "version":"2.0",
        "steps":[
            {
                "stepType":"restapi",
                "parameter":{
                    "url":"http://127.0.0.1:5000/get_array5",
                    "dataMode":"oneData",
                    "responseType":"json",
                    "column":[
                        {
                            "type":"long",
                            "name":"a.b"  //Find data from the a.b path
                        },
                        {
                            "type":"string",  //Find data from the a.c path
                            "name":"a.c"
                        }
                    ],
                    "dirtyData":"null",
                    "method":"get",
                    "socketTimeout":"60000",
                    "defaultHeader":{
                        "X-Custom-Header":"test header"
                    },
                    "customHeader":{
                        "X-Custom-Header2":"test header2"
                    },
                    "parameters":"abc=1&def=1"
                },
                "name":"restapireader",
                "category":"reader"
            },
            {
                "stepType":"stream",
                "parameter":{
    
                },
                "name":"Writer",
                "category":"writer"
            }
        ],
        "setting":{
            "errorLimit":{
                "record":""
            },
            "speed":{
                "throttle":true,  //When throttle is set to false, the mbps parameter does not take effect, indicating no throttling. When throttle is set to true, throttling is enabled.
                "concurrent":1,  //Job concurrency.
                "mbps":"12"//Throttling. Here 1 mbps = 1 MB/s.
            }
        },
        "order":{
            "hops":[
                {
                    "from":"Reader",
                    "to":"Writer"
                }
            ]
        }
    }
  • La configuration en mode script est décrite ci-dessous :

    After the RESTful API plugin sends an HTTP(S) request, it receives a response body (the body is a JSON object). The dataPath parameter specifies the JSON path to extract data from the body. Here are two examples:
    
    Using the following API response body as an example, the business data is in DATA, and the API returns multiple rows of data at once (DATA is an array):
    {
        "HEADER": {
            "BUSID": "bid1",
            "RECID": "uuid",
            "SENDER": "dc",
            "RECEIVER": "pre",
            "DTSEND": "202201250000"
        },
        "DATA": [
            {
                "SERNR": "sernr1"
            },
            {
                "SERNR": "sernr2"
            }
        ]
    }
    
    To extract multiple rows of data from DATA as multiple sync records, configure column as "column": [ "SERNR" ], dataMode as "dataMode": "multiData", and dataPath as "dataPath": "DATA".
    
    Using the following API response body as an example, the business data is in content.DATA, and the API returns one row of data at a time (DATA is an object):
    {
        "HEADER": {
            "BUSID": "bid1",
            "RECID": "uuid",
            "SENDER": "dc",
            "RECEIVER": "pre",
            "DTSEND": "202201250000"
        },
        "content": {
            "DATA": {
                "SERNR": "sernr2"
            }
        }
    }
    
    To extract one row of data from content.DATA as a single sync record, configure column as "column": [ "SERNR" ], dataMode as "dataMode": "oneData", and dataPath as "dataPath": "content.DATA".
                    

Paramètres du script Reader

Remarque

Les paramètres suivants interviennent dans le processus d'ajout d'une source de données et de configuration d'un nœud de tâche Data Integration.

Le plug-in actuel ne prend pas en charge les paramètres de planification.

Paramètre

Description

Obligatoire

Valeur par défaut

url

URL de l'API RESTful.

Oui

N/A

dataMode

Format des données JSON renvoyées par la requête API RESTful.

  • oneData : récupère un enregistrement à partir du JSON renvoyé.

  • multiData : récupère un tableau JSON à partir du JSON renvoyé et transmet plusieurs enregistrements au writer.

Oui

N/A

responseType

Format des données de la réponse. Actuellement, seul le format JSON est pris en charge.

Oui

JSON

column

Liste des colonnes à lire. Le paramètre type spécifie le type de données des données source, et le paramètre name spécifie le chemin JSON à partir duquel les données de la colonne actuelle sont récupérées. Vous pouvez spécifier les informations de colonne comme suit.

"column":[{"type":"long","name":"a.b" //Retrieve data from path a.b},{"type":"string","name":"a.c"//Retrieve data from path a.c}]

Pour chaque colonne spécifiée, les paramètres type et name sont obligatoires.

Oui

N/A

dataPath

Chemin vers un objet JSON unique ou un tableau JSON dans la réponse.

Non

N/A

method

Méthode de requête. GET et POST sont pris en charge.

Oui

N/A

socketTimeout

Délai d'expiration du socket pour l'accès à l'API RESTful, en millisecondes.

Non

60000

customHeader

Informations d'en-tête transmises à l'API RESTful.

Non

N/A

parameters

Informations de paramètre transmises à l'API RESTful.

  • Pour la méthode GET, saisissez abc=1&def=1.

  • Pour la méthode POST, saisissez les paramètres JSON.

Non

N/A

dirtyData

Spécifie comment gérer les données lorsqu'aucune donnée n'est trouvée au chemin JSON de la colonne spécifiée.

  • dirty : lorsqu'une colonne est introuvable lors de l'analyse des données, l'enregistrement est marqué comme donnée erronée.

  • null : lorsqu'une colonne est introuvable lors de l'analyse des données, la valeur de la colonne est définie sur null.

Oui

dirty

requestTimes

Nombre de fois où les données sont demandées à l'API RESTful.

  • single : envoie une seule requête.

  • multiple : envoie plusieurs requêtes.

Oui

single

requestParam

Lorsque requestTimes est défini sur multiple, vous devez spécifier le paramètre de boucle, tel que pageNumber. Le plug-in parcourt le paramètre pageNumber en fonction des valeurs startIndex, endIndex et step, et le transmet à l'API RESTful pour plusieurs requêtes.

Non

N/A

startIndex

Index de début des requêtes en boucle. L'index de début est inclus.

Non

N/A

endIndex

Index de fin des requêtes en boucle. L'index de fin est inclus.

Non

N/A

step

Taille du pas des requêtes en boucle.

Non

N/A

authType

Méthode d'authentification. Valeurs possibles :

  • Basic Auth : authentification de base.

    Si l'API de la source de données prend en charge l'authentification par nom d'utilisateur et mot de passe, sélectionnez cette méthode. Configurez ensuite le nom d'utilisateur et le mot de passe. Lors de l'intégration des données, les identifiants sont envoyés au endpoint RESTful via le protocole Basic Auth pour authentification.

  • Token Auth : authentification par jeton.

    Si l'API de la source de données prend en charge l'authentification par jeton, sélectionnez cette méthode. Configurez ensuite une valeur de jeton fixe. Lors de l'intégration des données, le jeton est transmis dans l'en-tête de la requête pour authentification. Par exemple : {"Authorization":"Bearer TokenXXXXXX"}.

    Remarque

    Pour utiliser une méthode de chiffrement personnalisée, vous pouvez utiliser la méthode d'authentification Token et fournir les informations d'authentification chiffrées en tant que AuthToken.

Non

N/A

authUsername/authPassword

Nom d'utilisateur et mot de passe pour l'authentification Basic Auth.

Non

N/A

authToken

Jeton pour l'authentification Token Auth.

Non

N/A

accessKey/accessSecret

Informations de compte pour l'authentification par signature API Alibaba Cloud.

Non

N/A

Démonstration de script Writer

{ "type":"job", "version":"2.0", "steps":[ { "stepType":"stream", "parameter":{ }, "name":"Reader", "category":"reader" }, { "stepType":"restapi", "parameter":{ "url":"http://127.0.0.1:5000/writer1", "dataMode":"oneData", "responseType":"json", "column":[ { "type":"long", //Place column data to path a.b "name":"a.b" }, { "type":"string", //Place column data to path a.c "name":"a.c" } ], "method":"post", "defaultHeader":{ "X-Custom-Header":"test header" }, "customHeader":{ "X-Custom-Header2":"test header2" }, "parameters":"abc=1&def=1", "batchSize":256 }, "name":"restapiwriter", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0" //The error count. }, "speed":{ "throttle":true,//If throttle is set to false, the mbps parameter does not take effect, which means throttling is disabled. If throttle is set to true, throttling is enabled. "concurrent":1, //The concurrency of the job. "mbps":"12"//Throttling. 1 mbps = 1 MB/s. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }

Paramètres du script Writer

Paramètre

Description

Obligatoire

Valeur par défaut

url

URL de l'API RESTful.

Oui

N/A

dataMode

Format des données JSON transmises via la requête RESTful.

  • oneData : envoie un seul enregistrement par requête. Le nombre de requêtes est égal au nombre d'enregistrements.

  • multiData : envoie un lot d'enregistrements par requête. Le nombre de requêtes est déterminé par le nombre de tâches fractionnées côté reader.

Oui

N/A

column

Liste des chemins de colonne pour la génération des données JSON. Le paramètre type spécifie le type de données des données source, et le paramètre name spécifie le chemin JSON où les données de la colonne actuelle sont placées. Vous pouvez spécifier les informations de colonne comme suit.

"column":[{"type":"long","name":"a.b" //Place column data to path a.b},{"type":"string","name":"a.c"//Place column data to path a.c}]

Remarque

Pour chaque colonne spécifiée, les paramètres type et name sont obligatoires.

Oui

N/A

dataPath

Chemin de l'objet JSON où le résultat des données est placé.

Non

N/A

method

Méthode de requête. POST et PUT sont pris en charge.

Oui

N/A

customHeader

Informations d'en-tête transmises à l'API RESTful.

Non

N/A

authType

Méthode d'authentification.

  • Basic Auth : authentification de base.

    Si l'API de la source de données prend en charge l'authentification par nom d'utilisateur et mot de passe, sélectionnez cette méthode. Configurez ensuite le nom d'utilisateur et le mot de passe. Lors de l'intégration des données, les identifiants sont envoyés au endpoint RESTful via le protocole Basic Auth pour authentification.

  • Token Auth : authentification par jeton.

    Si l'API de la source de données prend en charge l'authentification par jeton, sélectionnez cette méthode. Configurez ensuite une valeur de jeton fixe. Lors de l'intégration des données, le jeton est transmis dans l'en-tête de la requête pour authentification. Par exemple : {"Authorization":"Bearer TokenXXXXXX"}.

    Remarque

    Pour utiliser une méthode de chiffrement personnalisée, vous pouvez utiliser la méthode d'authentification Token et fournir les informations d'authentification chiffrées en tant que AuthToken.

Non

N/A

authUsername/authPassword

Nom d'utilisateur et mot de passe pour l'authentification Basic Auth.

Non

N/A

authToken

Jeton pour l'authentification Token Auth.

Non

N/A

accessKey/accessSecret

Informations de compte pour l'authentification par signature API Alibaba Cloud.

Non

N/A

batchSize

Nombre maximal d'enregistrements par requête lorsque dataMode est défini sur multiData.

Oui

512