0

xDomainRequests には GET と POST のみを使用できます。オプションのパラメーターを使用して、使用する webmethod を決定できるマッピングを作成する方法はありますか? たとえば、私は持っています:

@RequestMapping(method = RequestMethod.PUT)
@ResponseBody
public SomeObject someUpdateFunction(@RequestBody SomeObject objectToUpdate)
{
    ...
}

@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public SomeObject someCreateFunction(@RequestBody SomeObject objectToUpdate)
{
    ...
}

XDR を PUT メソッドにマップする方法はありますか? に POST オプションを追加したくないのは明らかですsomeUpdateFunction()

4

1 に答える 1

1

O'Reilly の書籍「RESTful Web Services」では、クエリ文字列またはリクエスト本文のいずれかを介して、目的のメソッドが「_method」パラメーターに含まれる規則について説明しています。これは、GET と POST のみが許可されている IE9 以前でクロスドメインの ajax リクエストを処理している場合に特に便利です。その場合、値が「PUT」の _method パラメータを含めます。

したがって、今説明した慣例に従えば、おそらく次のようなことができます。

private SomeObject processPut(objectToUpdate) 
{
    ...
}

@RequestMapping(method = RequestMethod.PUT)
@ResponseBody
public SomeObject someUpdateFunction(@RequestBody SomeObject objectToUpdate)
{
    return processPut(objectToUpdate);
}

@RequestMapping(method = RequestMethod.POST, params = "_method=PUT")
@ResponseBody
public SomeObject someUpdateFunction(@RequestBody SomeObject objectToUpdate)
{
    return processPut(objectToUpdate);
}

@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public SomeObject someCreateFunction(@RequestBody SomeObject objectToUpdate)
{
    ...
}

私はこのフレームワークの経験がほとんどないため、Spring でこれを行うためのより良い方法があるかもしれませんが、概念は維持されるはずです。

于 2013-09-25T16:25:05.997 に答える