在Restlet中检索资源ID

时间:2015-04-02 10:06:53

标签: java rest web restlet

什么是Restlet相当于以下内容 我与泽西岛一起使用的代码片段:

  @GET
  @Path("{id}")
  @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON,MediaType.TEXT_XML})
  public Todo getEntityXMLOrJSON(@PathParam("id") int id)
  {
    ...
  }

我的意思是,在使用Restlet框架时,我会执行以下操作:

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

如何在get方法中检索contactId?

1 个答案:

答案 0 :(得分:1)

如果在附加服务器资源时定义路径参数,则可以使用方法getAttribute在此服务器资源中访问其值,如下所述:

public class ContactServerResource extends ServerResource {
    @Get
    public Contact getContact() {
        String contactId = getAttribute("contactId");
        (...)
    }
}

您可以注意到您可以将这些元素定义为实例变量。以下代码是服务器资源ContactServerResource的典型实现:

public class ContactServerResource extends ServerResource {
    private Contact contact;

    @Override
    protected void doInit() throws ResourceException {
        String contactId = getAttribute("contactId");
        // Load the contact from backend
        this.contact = (...)
        setExisting(this.contact != null);
    }

    @Get
    public Contact getContact() {
        return contact;
    }

    @Put
    public void updateContact(Contact contactToUpdate) {
       // Update the contact based on both contactToUpdate
       // and contact (that contains the contact id)
    }

    @Delete
    public void deleteContact() {
       // Delete the contact based on the variable "contact"
    }
}

希望它可以帮到你, 亨利