7

Javascript クライアントからの DTO があります。リクエストオブジェクトが空で送信しようとするとdeleteFromService(新しく編集されたように見えます)。メソッドをpostToServiceリクエストオブジェクトに変更すると、適切に入力されます。

3.9 API を使用しています。私はここで途方に暮れています。

サービス:

public object Post(Order request)
{
    return _orderRepository.InsertOrder(request);
}

public object Delete(Order request)
{
    _orderRepository.DeleteOrder(request.Uuid);
    return true;
}

JS:

//Fails
serviceClient.deleteFromService("order", order, function () { }, deleteFailed);
//Works
serviceClient.postToService("order", order, function () { }, deleteFailed);

アップデート:

ServiceStackのソース コードに問題が見つかりました。POST の場合と同様に、DELETE を GET のように扱い、本文の代わりにリクエスト オブジェクトを作成します。

if (httpMethod == HttpMethods.Get || httpMethod == HttpMethods.Delete || httpMethod == HttpMethods.Options)
{
    try
    {
        return KeyValueDataContractDeserializer.Instance.Parse(queryString, operationType);
    }
}

これを行う際の問題は、ServiceStack JS クライアントが POST と同じロジックを使用して DELETE リクエストを作成し、送信するデータを本体 (技術的には jQuery XHR dataprop) に詰め込むことで、サーバーに方法がないことです。クライアントが送信しているメッセージを取得します。

私はこれを正しく読んでいますか?JS クライアントの削除は壊れていますか?

4

2 に答える 2

2

オプション変数の初期化の前にservicestack.js、関数に次の行を追加してクライアントを書き直しました...P.Send

if (ajaxOptions.type === "DELETE") {
    requestUrl = requestUrl + "?" + decodeURIComponent($.param(request[webMethod]));
}
于 2013-07-31T15:11:56.093 に答える