在 Restlet 中检索资源 ID
Retrieving resource id in Restlet
Restlet 等同于以下内容
我在 Jersey 中使用的代码片段:
@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?
如果您在附加服务器资源时定义路径参数,您可以使用方法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"
}
}
希望对你有帮助,
蒂埃里
Restlet 等同于以下内容 我在 Jersey 中使用的代码片段:
@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?
如果您在附加服务器资源时定义路径参数,您可以使用方法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"
}
}
希望对你有帮助, 蒂埃里