在 cloudflare-worker 服务上解析原始主体(非节点)
Parse raw body on cloudflare-worker service(Non NODE)
我使用 cloudflare-worker 在 cloudflare 上创建了一个 api 服务器环境,但没有节点服务器 运行(cloudflare-worker 几乎是无服务器事件处理程序服务)。它确实提供了处理任何子域调用的配置,就像 api 的工作方式一样。我使用了一个名为 cf-worker-router
的包来执行此操作。
我的云服务如下所示:
import { ApiError, ApiRedirect, DomainRouter, FetchRouter } from 'cf-worker-router';
const router = new FetchRouter();
// add the cloudflare event listener
addEventListener('fetch', (event) => {
router.onFetch(event);
});
router.route('/users', 'POST', async (event) => {
// automatically converts anything not of Response type to ApiResponse
return await event.request.text();
});
我所做的是为 url 创建一个 POST 请求并向该请求提供一些正文。我能够成功获取请求文本,但现在我不知道如何解析我收到的文本。
将请求作为multipart/form-data
请求使用时,收到的正文如下:
"----------------------------093590450792211419875705\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nJon Doe\r\n----------------------------093590450792211419875705--\r\n"
我尝试发送 application/x-www-form-urlencoded
并且我的回复文本是这样的:
"name=Jon%20Doe"
与 application/json
请求类似:
"{\n\t\"name\": \"Jon Doe\"\n}"
由于cloudflare没有使用nodejs服务器,body-parser
这里不能应用。该服务几乎是开放的 api,因此它需要处理各种请求内容类型。有什么方法可以识别这些内容类型中的任何内容类型并将其解码为 javascript 中的有效对象?
要处理表单数据上传,您可以使用 request.formData() method which will return a promise of a FormData 对象。
例如:
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
const formData = await request.formData();
const name = formData.get('name');
return new Response(`Hello ${name}`);
}
我使用 cloudflare-worker 在 cloudflare 上创建了一个 api 服务器环境,但没有节点服务器 运行(cloudflare-worker 几乎是无服务器事件处理程序服务)。它确实提供了处理任何子域调用的配置,就像 api 的工作方式一样。我使用了一个名为 cf-worker-router
的包来执行此操作。
我的云服务如下所示:
import { ApiError, ApiRedirect, DomainRouter, FetchRouter } from 'cf-worker-router';
const router = new FetchRouter();
// add the cloudflare event listener
addEventListener('fetch', (event) => {
router.onFetch(event);
});
router.route('/users', 'POST', async (event) => {
// automatically converts anything not of Response type to ApiResponse
return await event.request.text();
});
我所做的是为 url 创建一个 POST 请求并向该请求提供一些正文。我能够成功获取请求文本,但现在我不知道如何解析我收到的文本。
将请求作为multipart/form-data
请求使用时,收到的正文如下:
"----------------------------093590450792211419875705\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nJon Doe\r\n----------------------------093590450792211419875705--\r\n"
我尝试发送 application/x-www-form-urlencoded
并且我的回复文本是这样的:
"name=Jon%20Doe"
与 application/json
请求类似:
"{\n\t\"name\": \"Jon Doe\"\n}"
由于cloudflare没有使用nodejs服务器,body-parser
这里不能应用。该服务几乎是开放的 api,因此它需要处理各种请求内容类型。有什么方法可以识别这些内容类型中的任何内容类型并将其解码为 javascript 中的有效对象?
要处理表单数据上传,您可以使用 request.formData() method which will return a promise of a FormData 对象。
例如:
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
const formData = await request.formData();
const name = formData.get('name');
return new Response(`Hello ${name}`);
}