2

Java で restlet を使い始めたばかりで、その簡単さに驚きました。しかし、これはプットでした。その後、get を使い始めましたが、get で情報を渡す方法がわかりませんでした。

put を使用すると、次のように簡単でした。

@Put
public Boolean store(Contact contact);

しかし、get でこれを実行しようとすると、うまくいきません。周りを読んで、私はそれにパラメータを渡さず、これだけを持っている必要があると思います:

@Get
public Contact retrieve();

そして、パラメーターをURLなどに渡しますか? しかし、これを行う方法に関する情報が見つかりません。put と同様に、次を使用できます。

resource.store(user1);

何か助けてください。

これは、例を見るだけで簡単に実行できるようなものではないと確信しています。反対側の URL から情報を取得する方法の例も非常に役立ちます。

ありがとう

私は今、クライアント側に持っています:

String username = "tom";
ClientResource cr2 = new ClientResource("http://.../ContactManager/contacts/" + username);
ContactResource resource2 = cr2.wrap(ContactResource.class);
resource2.logIn();

サーバー側には次のものがあります。

@Get
public Contact logIn(){
    System.out.println("name is " + resource.getAttributes().get("contactId"));     
    return null;
}

しかし、私はリソースが何であるかわかりませんか?私のプログラムには存在せず、必要な型や宣言する場所がわかりません。

4

3 に答える 3

2

RESTでの良いアプローチは、URI内でこの連絡先IDを指定することです。そのようなもの:/ contacts/mycontactid。

アプリケーションクラス内にリソースをアタッチする場合、このセグメントを属性(この場合は連絡先ID)として定義できます。

public class ContactsApplication extends Application {
    public Restlet createInboundRoot() {
        Router router = new Router(getContext());
        router.attach("/contacts/", ContactsServerResource.class);
        router.attach("/contacts/{contactId}", ContactServerResource.class);
        return router;
    }
}

次に、Richardから提供されたコードを回答に含めることができます。

お役に立てば幸いです。ティエリー

于 2013-01-31T13:46:11.020 に答える
1

この質問は以前に尋ねられたことは知っていますが、あなたが探している答えは次のとおりです。

アプリケーションコード

public class ContactsApplication extends Application {
    public Restlet createInboundRoot() {
        Router router = new Router(getContext());
        router.attach("/user/", ContactsServerResource.class);
        router.attach("/user/{user}", ContactServerResource.class);
        return router;
    }
}

リソースコード

@Get
public void login() 
String userName = (String)this.getRequestAttributes().get("user");

を使用(String)this.getRequestAttributes().get("user");すると、URL から詳細を抽出できます。

お役に立てれば

于 2015-11-10T21:11:44.740 に答える
0

あなたが探しているのは次のようなものです:

public final Representation get() {
  String contactId = request.getAttributes().get("contactId"));
  // Find the Contact object with that id
  JacksonRepresentation<Contact> result = 
    new JacksonRepresentation<Contact>(contact);
  return result;
}

また、参照してください:AndroidからRESTlet Webサービスにパラメーターを渡す方法は? 同様のアプローチのために。

于 2013-01-30T22:24:28.457 に答える