【问题标题】:Obtaining XML in the Request Body for Post in Nest.js在 Nest.js 中获取 Post 请求正文中的 XML
【发布时间】:2023-03-16 23:35:01
【问题描述】:

我很好奇是否可以在Nest.js的Request Body中获取XML数据。

依赖关系

"dependencies": {
    "@nestjs/common": "^7.0.0",
    "@nestjs/core": "^7.0.0",
    "@nestjs/platform-express": "^7.0.0",

要求

我希望有一个名为 /EPCIS/capture 的 HTTP POST API,它可以获取如下 XML 文档:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<epcis:EPCISDocument
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:epcis="urn:epcglobal:epcis:xsd:1"
    xmlns:epcglobal="urn:epcglobal:xsd:1"
    xsi:schemaLocation="urn:epcglobal:epcis:xsd:1 EPCglobal-epcis-1_0.xsd"
    creationDate="2008-03-16T22:13:16.397+01:00"
    schemaVersion="1.0">
  <EPCISBody>
    <EventList>
      <ObjectEvent>
        <eventTime>2008-03-16T22:13:16.397+01:00</eventTime>
        <eventTimeZoneOffset>+01:00</eventTimeZoneOffset>
        <epcList>
          <epc>urn:epc:id:sgtin:0614141.107346.2017</epc>
          <epc>urn:epc:id:sgtin:0614141.107346.2018</epc>
        </epcList>
        <action>OBSERVE</action>
        <bizStep>urn:epcglobal:epcis:bizstep:fmcg:shipped</bizStep>
        <disposition>urn:epcglobal:epcis:disp:fmcg:unknown</disposition>
        <readPoint>
          <id>urn:epc:id:sgln:0614141.07346.1234</id>
        </readPoint>
        <bizLocation>
          <id>urn:epcglobal:fmcg:loc:0614141073467.A23-49</id>
        </bizLocation>
        <bizTransactionList>
          <bizTransaction type="urn:epcglobal:fmcg:btt:po">
            http://transaction.acme.com/po/12345678
          </bizTransaction>
        </bizTransactionList>
      </ObjectEvent>
    </EventList>
  </EPCISBody>
</epcis:EPCISDocument>

在我的控制器中:


Post('capture')
    addEPCDocument(@Body() epcDocument: any): any {
        console.log(epcDocument)
    }

但在记录传入的请求正文时,我得到的只是{}。我的 POSTMAN 设置已经提到:

Content-Type: application/xml

Body 中我粘贴了上面提到的XML。响应是 HTTP 400 错误请求。

从 Nest.JS 的请求正文中提取 XML 的通常方法是什么?

【问题讨论】:

    标签: xml http-post nestjs


    【解决方案1】:

    Nest 带有预定义的body-parser,但您可以修改它用于处理 xml 的配置。默认情况下,它只适用于application/jsonapplicaiton/x-www-form-urlencoded。您可以使用不同的中间件来解析 xml 请求,like this one

    【讨论】:

      猜你喜欢
      • 2018-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-07
      • 2022-01-07
      • 2020-09-14
      • 2022-06-29
      • 2016-08-01
      相关资源
      最近更新 更多