在 PHP 服务 multipart/form-data 文件中创建 JSON API
Create a JSON API in PHP Serving multipart/form-data File
我想创建一个 Streaming PHP API 发送 JSON 个文件(而不是字符串)。
这里给出:
- 我们有一个现有的 PHP REST API,它提供具有
application/json
MIME 类型的 JSON 数据。但是,JSON 数据有时会超过 6-10 MB,具体取决于查询。
- 另一个应用程序将从 PHP REST API 的端点请求,但应该接收一个 JSON 文件以自动充当多部分流。
我应该如何在 PHP 中构建我的 HTTP Headers、JSON 内容等以将 JSON 作为文件而不是字符串来制作它是流媒体服务器吗?
我创建了一个服务于 multipart/form-data
的虚拟服务器,前端将文件下载为一个字符串,文件名称为 file.php
。
<?php
header('Content-Type: multipart/form-data');
echo file_get_contents('file.json'); // 49 MB file
前端采集完multipart/form-data
后,应该将JSON字符串采集为流,并转化为JSON对象,像这样:
const jsonData: string[] = []
// Stream and parse the data inside JSON
const stream = streamableResponse.nodeStream()
// Collect all json string
stream.on('data', (chunk) => {
jsonData.push(chunk)
})
// Handle error of JSON stream
stream.on('error', (error) => {
logger.error(`An error occured when getting the file contents for ${fileName}`)
logger.error(error)
})
// Wait for the stream to finish
stream.on('end', async () => {
const data = JSON.parse(jsonData)
console.log(data) // Process object data
}
上面的代码首先将 HTTP 响应收集为字符串,然后再将其转换为已解析的 JavaScript 代码。
我想创建一个 Streaming PHP API 发送 JSON 个文件(而不是字符串)。
这里给出:
- 我们有一个现有的 PHP REST API,它提供具有
application/json
MIME 类型的 JSON 数据。但是,JSON 数据有时会超过 6-10 MB,具体取决于查询。 - 另一个应用程序将从 PHP REST API 的端点请求,但应该接收一个 JSON 文件以自动充当多部分流。
我应该如何在 PHP 中构建我的 HTTP Headers、JSON 内容等以将 JSON 作为文件而不是字符串来制作它是流媒体服务器吗?
我创建了一个服务于 multipart/form-data
的虚拟服务器,前端将文件下载为一个字符串,文件名称为 file.php
。
<?php
header('Content-Type: multipart/form-data');
echo file_get_contents('file.json'); // 49 MB file
前端采集完multipart/form-data
后,应该将JSON字符串采集为流,并转化为JSON对象,像这样:
const jsonData: string[] = []
// Stream and parse the data inside JSON
const stream = streamableResponse.nodeStream()
// Collect all json string
stream.on('data', (chunk) => {
jsonData.push(chunk)
})
// Handle error of JSON stream
stream.on('error', (error) => {
logger.error(`An error occured when getting the file contents for ${fileName}`)
logger.error(error)
})
// Wait for the stream to finish
stream.on('end', async () => {
const data = JSON.parse(jsonData)
console.log(data) // Process object data
}
上面的代码首先将 HTTP 响应收集为字符串,然后再将其转换为已解析的 JavaScript 代码。