-1

この方向で実行されているSpring SVMで実行されているwebappがあります。

http://localhost:8085/mongodb

GET および POST リクエストを処理するメイン コントローラーは次のようになります。

@Controller
public class HomeController {

    private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
    private static final String DATA_FIELD = "Data";

    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String home(Model model) {
        return "home";
    }

    @RequestMapping(value = "/", method = RequestMethod.POST)
    public ModelAndView createDomain(@RequestBody Domain Domain, HttpServletResponse httpresponse, WebRequest request) throws Exception{

        logger.info("Welcome home! The client locale is {}.", "FUCK YOU2");

        Domain createdDomain = Domain;

        logger.info("Post Received" + Domain.toString());

        //Create HTTP Response for the POST request
        httpresponse.setStatus(HttpStatus.CREATED.value());

        MongoOperations mongoOps = new MongoTemplate(new Mongo(),"rest_database");
        mongoOps.insert(Domain);


        System.out.println("PRINTED");

        return new ModelAndView("post", DATA_FIELD, createdDomain);
    }

}

どうやらコードは機能しているようです。Chrome Extension Advanced Rest Client ( here ) を使用して POST リクエストを送信すると、クライアントは毎回 POST を送信してから GET を送信するため、常に GET メソッドでページを取得します。

奇妙なことに、Google chrome ネットワーク開発者ツールは保留中の POST リクエストを表示し、次に OK を返す GET リクエストを表示します。ネットワーク デバッガーは次のように表示します。

https://dl.dropboxusercontent.com/u/7437425/network_debugger.png

このリクエストを送信すると:

https://dl.dropboxusercontent.com/u/7437425/post_response.png

これが POST を送信する標準的な方法であるかどうかを知りたいのですが、その後すぐに GET を送信します。

面白いことに、私のコンソールには次のコマンドの結果が表示されません。

logger.info("Welcome home! The client locale is {}.", "FUCK YOU2");
System.out.println("PRINTED");

これにより、実際には POST リクエストを処理するメソッドがまったく実行されていないと思います。

ありがとう!

4

1 に答える 1