2

私の質問はこの質問に似ていますが、受け入れられた回答に説明を求めるコメントを追加する方法がわからないため、新しい質問を作成する必要があることに注意してください。

次のような休息サービスがあります。

namespace My.API
{
    [Route("/event/{Id}", Verbs = "POST")]
    public class EventRequest
    {
        public int Id { get; set; }
        public string Content { get; set; }
    }

    public class EventService : Service
    {
        public object Post(EventRequest request)
        {
            // Do something with request.Content
        }
    }
}

次のフォームデータを使用して投稿リクエストを行うと:

Content=%22this+is+a+%22+test

request.Content に含まれるもの

this is a " tes

最初の二重引用符が欠落しており、テストの最後の t が欠落していることに注意してください。

さて、上にリンクされた他の質問で受け入れられた答えは、文字列をエンコードする必要があると言っていますが、とにかくこれの動作を変更できるかどうか疑問に思っています. パブリック API を作成しようとしています。API のクライアントが特定の方法で文字列をエンコードする必要がある場合、エラーが発生すると思います。通常の文字列を提供できるはずです。

基本的に、次の jQuery ajax 呼び出しが機能するはずです。

$.ajax({
  url: "api/event/" + id,
  type: "POST",
  data: {Content : content}
});

ここで content は生の/エンコードされていない文字列であり、jQuery はサービスに渡す前にフォーム URL エンコードを実行します。サービスは元の生の文字列を返すだけです。

4

2 に答える 2

0

Web のルールでは、文字列が安全に通過するようにエンコードする必要があるとされています。エンコードしないと、すべての関係者がデータの読み取り/書き込み方法を保証できなくなります。

文字列をエンコードする必要がある場合、ユーザーが文字列をエンコードする必要があると考えるのは完全に合理的だと思います。

于 2013-05-28T20:14:25.893 に答える