0

これが簡単な質問であることを願っています。以前に webapi または安らかなサービスを使用してパブリック API を作成したことがありません。そのため、複雑なオブジェクト パラメーターを使用する Put メソッドまたは Post メソッドを作成する場合、本文で送信される xml に名前空間情報を含める必要があることに気付きました。例えば。

  public HttpResponseMessage Put(Guid vendortoken, [FromBody] ActionMessage message)
    {
        if (message == null)
            return Request.CreateErrorResponse(HttpStatusCode.ExpectationFailed,
                                               "actionmessage must be provided in request body.");

        return Request.CreateResponse(HttpStatusCode.OK);
    }

メッセージがnullではない場合、私のリクエストは次のようになります。

<ActionMessage
        xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://schemas.datacontract.org/2004/07/IntegrationModels">
    <Message i:type="NewAgreement">
        <AgreementGuid>3133b145-0571-477e-a87d-32f165187783</AgreementGuid>
        <PaymentMethod>Cash</PaymentMethod>
    </Message>
    <Status>0</Status>
</ActionMessage>

もちろん、ここでの鍵はxmlnsです。一方で、名前空間は非常に一般的であるため、ベンダーが提供することは問題ではないと思いますが、一方で、本当に必要なのですか? そうでない場合、どうすればこれを修正できるので、名前空間を省略した場合にメッセージが入力された状態で戻ってきますか?

ああ、それらすべてにjsonを使用させることができればいいのに:(

4

1 に答える 1

1

名前空間は XML で重要です。それを削除したい場合は、ActionMessageクラスを変更して、適切な属性で注釈を付けることです(あなたの場合、私はそれが であると想定しています[DataContract(Namespace="")])。これにより、入力 (実際には、名前空間を使用してその変更を行った後はエラーになるため、API を使用しているクライアントが既に存在する場合は、その影響を考慮してください)。

于 2013-05-14T22:42:12.610 に答える