Hi Paul, Don't know if you'll get a reply from others, so thought I would chip in with a couple of thoughts.
>1. What is required to be RFC-compliant or to conform to current practice. I don't think there are any constraints put on what your URLs look like by the RFCs. AFAIK anyway. Simplicity and consistency would be important, of course. I think best practices might say that URLs should be discovered in your representations, if they're important to your api. Use appropriate link relations to make them understandable. >2. What URLs Abdera will handle automatically and what I must implement. I don't think Abdera will handle any URLs automatically, you must build your servlet and deploy it yourself. Abdera may provide some plumbing code to help. You may be able to draw on the example code as a basis for what the Abdera devs were thinking when they designed the framework. Related to that, and my suggestion for your third question: > 3. Clarification distinguishing the functions of TargetResolver and > TargetBuilder. I have not used TargetBuilder myself. A TargetResolver identifies the nature of the request based on URL and headers, so that it can be mapped to the appropriate handling code. I imagine that TargetBuilder would be useful for generating links in a consistent manner. The example code is what you should go by in the absence of more detailed docs (and/or advice from others on this list!). HTH. Good luck. Peter Rushforth -----Original Message----- From: Paul B. Anderson [mailto:[email protected]] Sent: February 3, 2015 11:39 To: [email protected] Subject: URL Design Choices I'm beginning to build an Atom server based on Abdera and I am unclear on what I should do for the URLs. It seems to be an important aspect of designing creating the server but the tutorials do not go into the requirements and ramifications. I have read the Atom RFCs. I don't have a problem with the service document or an individual entry. The Server Implementation Guide (excerpt shown below) shows in line 34, for example, a number of possibilities following collection that I did not see explained. Can provide any general guidance for setting up URLs or point me to something that provides some additional information? I am particularly interested in: 1. What is required to be RFC-compliant or to conform to current practice. 2. What URLs Abdera will handle automatically and what I must implement. 3. Clarification distinguishing the functions of TargetResolver and TargetBuilder. Thanks! Paul 22 setTargetResolver( 23 new RegexTargetResolver() 24 .setPattern("/atom(\\?[^#]*)?", TargetType.TYPE_SERVICE) 25 .setPattern("/atom/([^/#?]+);categories", TargetType.TYPE_CATEGORIES, "collection") 26 .setPattern("/atom/([^/#?;]+)(\\?[^#]*)?", TargetType.TYPE_COLLECTION, "collection") 27 .setPattern("/atom/([^/#?]+)/([^/#?]+)(\\?[^#]*)?", TargetType.TYPE_ENTRY, "collection","entry") 28 .setPattern("/search", OpenSearchFilter.TYPE_OPENSEARCH_DESCRIPTION) 29 ); 30 31 setTargetBuilder( 32 new TemplateTargetBuilder() 33 .setTemplate(TargetType.TYPE_SERVICE, "{target_base}/atom") 34 .setTemplate(TargetType.TYPE_COLLECTION, "{target_base}/atom/{collection}{-opt|?|q,c,s,p,l,i,o}{-join|&|q,c,s,p,l,i,o}") 35 .setTemplate(TargetType.TYPE_CATEGORIES, "{target_base}/atom/{collection};categories") 36 .setTemplate(TargetType.TYPE_ENTRY, "{target_base}/atom/{collection}/{entry}") 37 .setTemplate(OpenSearchFilter.TYPE_OPENSEARCH_DESCRIPTION, "{target_base}/search") 38 );
