1

次の Spring コードがあるとします。

@Controller
@RequestMapping("/somepath")
public class SomeService {
    @RequestMapping(headers = "Accept=application/json")
    public ReturnType methodOne() {
        // stuff
    }

    @RequestMapping(headers = "Accept=text/html")
    public ReturnType methodTwo() {
        // stuff
    }
}

クライアントに「Accept」ヘッダーがまったく含まれていない場合、常に「application/json」メソッドが text/html メソッドよりも優先して呼び出されることに気付きました。私の質問は - なぜですか?どちらかを選択する必要はありません。代わりにエラーメッセージが表示されることを期待していました...

具体例:

@RequestMapping("/somepath")
@Controller
public class SomeService {

    @ResponseBody
    @RequestMapping(headers = "Accept=application/json")
    public ResponseEntity<String> methodOne() {
        return new ResponseEntity<String>("Method One", HttpStatus.OK);
    }

    @ResponseBody
    @RequestMapping(headers = "Accept=text/html")
    public ResponseEntity<String> methodTwo() {
        return new ResponseEntity<String>("Method Two", HttpStatus.OK);
    }

    @ResponseBody
    @RequestMapping(headers = "Accept=application/xml")
    public ResponseEntity<String> methodThree() {
        return new ResponseEntity<String>("Method Three", HttpStatus.OK);
    }
}

Accept ヘッダーがない場合は、常に「Method One」が出力されます。

4

1 に答える 1

0

春は何も好まない。指定したもの(pdf、xmlなど)を返すことができます

ただし、ビューは JavaScript と ajax を使用してコントローラーと対話することが多いため、JSON が一般的に実装されます。javascript で使用するのに最適なデータ形式: JSON.

于 2012-11-15T15:30:39.243 に答える