You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Curl携带API Key参数提交JSON数据(附PHP代码)

Hey there! Let's walk through exactly how to send JSON POST data with an API Key using cURL—both from the command line and in your PHP code, since you mentioned working with an index.php file and building a $data array.

1. cURL Command Line Methods

First, let's cover the command line approach, since that's a quick way to test your API calls.

Option A: API Key in URL Parameters (your initial approach)

If the API expects the key as a query parameter (like apikey in the URL), use this command:

curl -X POST \
  'https://your-api-target-url.com?apikey=YOUR_REAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "field1": "value1",
    "field2": "value2"
  }'
  • -X POST: Specifies we're making a POST request
  • -H 'Content-Type: application/json': Tells the server we're sending JSON data
  • -d: Contains the JSON payload we want to submit

Most APIs prefer API keys in request headers (they don't show up in server logs like URL parameters might). Common header formats are Authorization: Bearer [KEY] or a custom header like X-API-Key: [KEY]:

# Bearer Token format
curl -X POST \
  https://your-api-target-url.com \
  -H 'Authorization: Bearer YOUR_REAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "field1": "value1",
    "field2": "value2"
  }'

# Custom X-API-Key header format
curl -X POST \
  https://your-api-target-url.com \
  -H 'X-API-Key: YOUR_REAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "field1": "value1",
    "field2": "value2"
  }'

2. PHP cURL Implementation (for your index.php)

Since you're building a $data array in PHP, here's how to convert that to JSON and send it with your API key.

First, let's assume your $data array looks like this:

$data = [
    'field1' => 'value1',
    'field2' => 'value2',
    // Add your other data fields here
];

Option A: API Key in URL Parameters

$apiUrl = 'https://your-api-target-url.com';
$apiKey = 'YOUR_REAL_API_KEY';

// Append the API key to the URL (urlencode handles special characters)
$urlWithKey = $apiUrl . '?apikey=' . urlencode($apiKey);

// Initialize cURL
$ch = curl_init($urlWithKey);

// Set critical cURL options
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Return response instead of printing it
curl_setopt($ch, CURLOPT_POST, true); // Mark as POST request
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json'
]);
// Convert PHP array to JSON string
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

// Execute the request and get results
$response = curl_exec($ch);
$httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

// Clean up cURL resource
curl_close($ch);

// Handle the response
if ($httpStatusCode === 200) {
    echo "Success! Response: " . $response;
} else {
    echo "Request failed. HTTP Code: " . $httpStatusCode . ", Response: " . $response;
}
$apiUrl = 'https://your-api-target-url.com';
$apiKey = 'YOUR_REAL_API_KEY';

$ch = curl_init($apiUrl);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    // Pick the header format your API requires:
    'Authorization: Bearer ' . $apiKey,
    // OR 'X-API-Key: ' . $apiKey
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

$response = curl_exec($ch);
$httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

curl_close($ch);

// Handle response logic here...

Key Notes to Remember

  • Always check the API documentation to confirm exactly how it expects the API key (URL param, header, or even inside the JSON payload—though that's less common).
  • If your $data array has non-ASCII characters (like Chinese), use json_encode($data, JSON_UNESCAPED_UNICODE) to avoid garbled text.
  • Make sure the cURL extension is enabled in your PHP setup (it's usually enabled by default, but if not, uncomment extension=curl in your php.ini file).
  • Use urlencode() when adding the API key to the URL to avoid issues with special characters like & or =.

内容的提问来源于stack exchange,提问作者vict oru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:01:29