3

私の要件は、Apache CXF Rest Client API ベンダーが提供する URL http://test.comを使用することです。

Method: get
Url: /getDetails
Header set to application/json
and parameter z=12345

そして JSON としての応答:

{
  "hasMore": "true",
  "results": [
    {
      "name": "ATM: 16th & Treemont",
      "phone": "(303) 249--‐9117",
      "streetAddress": "303 16th St. Suite 100"
    },
    {    
      "name": "ATM2:17th & Fremont",
      "phone": "(555) 999-98886",
      "streetAddress": "304 17th St. Suite 200"
    }
  ]
}

クライアント API のドキュメントを読むと、次のリンクが表示 されます: http://cxf.apache.org/docs/jax-rs-client-api.html#JAX-RSClientAPI-CXFWebClientAPI Book() について説明しています 私の要件のために Book オブジェクトをどのように記述すればよいですか?

WebClient client = WebClient.create("http://books");
client.path("bookstore/books");
client.type("text/xml").accept("text/xml")
Response r = client.post(new Book());
Book b = r.readEntity(Book.class);   

また、私はプロキシの使用法を見ます: それは BookStore.class について語っています..これはサーバーオブジェクトではありませんか? もしそうなら、私は最後に BookStore クラスまたはオブジェクトを作成したり、持つことができません。

BookStore store = JAXRSClientFactory.create("http://bookstore.com", BookStore.class);
// (1) remote GET call to http://bookstore.com/bookstore
Books books = store.getAllBooks();
// (2) no remote call
BookResource subresource = store.getBookSubresource(1);
// {3} remote GET call to http://bookstore.com/bookstore/1
Book b = subresource.getBook();

応答用に Book() のようなオブジェクトを作成する必要がありますか? 実際には、JSON 応答 (jettison) から各値を読み取る必要があります。要求に対してどのアプローチに従うべきか、またどのように進めるべきか。困っています アドバイスお願いします。

私の要件は、Apache CXF Rest API を使用することです。

4

1 に答える 1

3

はい。必要に応じて同じフィールドを使用して、サーバー側の Entity クラスと同様に、クライアント側に単純な pojo モデルを作成します。また、json をオブジェクトに直接マーシャリングすることもできます。

Book モデルを使うとしましょう

ID が 1 の Book オブジェクトを取得するには:

WebClient client = WebClient.create("http://localhost:8084/appname/rest/");

Book book = client.path("book/" + 1 ).accept("application/json").get(Book.class);

すべての Book オブジェクトを取得するには:

WebClient client = WebClient.create("http://localhost:8084/appname/rest/");


Set<Book> books = new HashSet<Book>(client.path("books/all").accept("application/json").getCollection(Book.class));

Book オブジェクトを POST します。

WebClient client = WebClient.create("http://localhost:8084/appname/rest/");

Book book = new Book();

book.setAuthor("Shiv);

book.setPublishedDate(new Date());

client.path("/book-post");

client.post(book); // Persist object

Book オブジェクトを更新する

WebClient client = WebClient.create("http://localhost:8084/appname/rest/");

Book book = client.path("book/" + 1 ).accept("application/json").get(Book.class);

book.setAuthor("Gopal);

book.setPublishedDate(new Date());

client.back(true);

client.path("/book-put");

client.put(book);// update book object

注意

client.back (true)は残りの API エンドポイント アドレスに戻ります

client.path (String)は、文字列値をエンドポイント アドレスに追加します。

于 2015-03-16T09:28:23.957 に答える